>>===== MODE =====>>
citation
<<===== MODE =====<<


>>===== DESCRIPTION =====>>
<https://github.com/citeproc-py/citeproc-py/issues/204>

CSL 1.0.2 says of `cs:label` that "the term is only rendered if the selected
variable is non-empty". A label naming a variable the reference does not carry
must therefore render nothing, rather than leaving the bare term behind: the
first citation below is `Title` and not `Title, edition, volume, page`.

An empty string counts as empty, so `edition` is still suppressed for the third
item. The second item carries all three variables, and `page` holds a range, so
its label is the plural form.
<<===== DESCRIPTION =====<<


>>===== RESULT =====>>
Title
Another Title, edition, volume, pages
Third Title
<<===== RESULT =====<<


>>===== CITATION-ITEMS =====>>
[
    [
        {
            "id": "ITEM-1"
        }
    ],
    [
        {
            "id": "ITEM-2"
        }
    ],
    [
        {
            "id": "ITEM-3"
        }
    ]
]
<<===== CITATION-ITEMS =====<<


>>===== CSL =====>>
<style
      xmlns="http://purl.org/net/xbiblio/csl"
      class="in-text"
      version="1.0">
  <info>
    <id />
    <title />
    <updated>2026-08-04T00:00:00+00:00</updated>
  </info>
  <citation>
    <layout>
      <group delimiter=", ">
        <text variable="title"/>
        <label variable="edition"/>
        <label variable="volume"/>
        <label variable="page"/>
      </group>
    </layout>
  </citation>
</style>
<<===== CSL =====<<


>>===== INPUT =====>>
[
    {
        "id": "ITEM-1",
        "type": "book",
        "title": "Title"
    },
    {
        "id": "ITEM-2",
        "type": "book",
        "title": "Another Title",
        "edition": "2nd",
        "volume": "3",
        "page": "12-14"
    },
    {
        "id": "ITEM-3",
        "type": "book",
        "title": "Third Title",
        "edition": ""
    }
]
<<===== INPUT =====<<


>>===== VERSION =====>>
1.0
<<===== VERSION =====<<
