XML-TEI Как вызвать два атрибута

Я работаю с поэзией и хочу присвоить каждому стиху собственный идентификатор, который смешивает номер стихотворения и номер стиха.

Заголовок:

  <?xml version="1.0" encoding ="UTF-8" standalone ="no" ?>
    <TEI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <teiHeader>
        <fileDesc>
          <titleStmt>
            <title n="013">13</title>

Стихи:

<lg>
    <l n="01"></l>
</lg>

Я хочу создать атрибут xml:id для <l>, например p013-v01 (стихотворение 13 из n@title; стих 1 из n@l). Есть ли способ сделать это автоматически для каждой строки?

Целью этого является сравнение версий и редакций одного и того же стихотворения. Мне сказали сделать это, но, честно говоря, я не уверен в полезности этого атрибута xml:id. Я надеюсь, что вы можете мне помочь. Спасибо!


person mindolianum    schedule 22.01.2021    source источник


Ответы (1)


    <xsl:template match="l">
       <xsl:variable name="id-num" select="concat('p', ancestor::TEI/descendant::title/@n, '-v', ./@n)"/>
       <l id="{$id-num}">
          <xsl:attribute name="n"><xsl:value-of select="@n"/></xsl:attribute>
          <xsl:apply-templates/>
       </l>
    </xsl:template>

Идентификационное значение является результатом объединения буквенных текстовых строк и двух значений атрибутов.

person Wolfgang Schindler    schedule 22.01.2021
comment
Спасибо! но вы делаете это в XSLT, верно? Можно ли это сделать в файле XML? Тем не менее, я думаю, ваш метод может подойти для той цели, которую я описал. Спасибо еще раз! - person mindolianum; 22.01.2021
comment
Боюсь, я не совсем понимаю, что вы имеете в виду, говоря об этом в файле XML. Конечно, вы можете отредактировать файл XML вручную, но с помощью XSLT вы получите то, что хотите. XSLT — это язык преобразования, который принимает XML-файл в качестве входных данных и преобразует его в другой XML-файл в качестве выходных данных. Я только что опубликовал код XSLT, а не вывод XML, который он генерирует. - person Wolfgang Schindler; 25.01.2021
comment
Прошу прощения за отсутствие опыта. Я не мог объяснить себя лучше, но теперь я понял. Вы совершенно правы! Большое спасибо: Д - person mindolianum; 04.02.2021