XSLT: использовать значение ссылочного элемента - PullRequest
0 голосов
/ 20 мая 2018

Я хотел бы получить значение элемента, на которое ссылается другой элемент через уникальный идентификатор.Например:

<when xml:id="TLI_2" interval="7.683988796743416" since="#T_START"/>
<annotationBlock who="#H-F" start="#TLI_2" end="#TLI_3">
    <u xml:id="Ladida"><incident>
      <desc>TiH</desc>
           </incident><w xml:id="wd1e235">das</w><w xml:id="wd1e237">war</w><w
                    xml:id="wd1e239">die</w><w xml:id="wd1e241">erste</w><w xml:id="wd1e243"
                    >große</w><w xml:id="wd1e245">liebe</w><incident>
                    <desc>schnitt</desc>
                </incident></u>
        </annotationBlock>

Мне нужно сопоставить значение атрибута interval.Специфический элемент when, на который ссылается атрибут в <annotationBlock>.Итак, мои текущие XSLT-шаблоны выглядят примерно так:

<xsl:template match="annotationBlock/u/w">
 <when>
   <xsl:attribute name="interval">
     <xsl:value-of select="../../From here i don't know what to do"/>
<!-- The value should be the value of the interval-attribute of the referenced when-element -->
   </xsl:attribute>
 </when>
</xsl:template>

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 20 мая 2018

Предполагая, что вы хотите выбрать элемент when по его значению атрибута xml:id, вы можете использовать id('TLI_2') для этого в контексте элементов w с предком annotationBlock Я думаю, что вы хотите id(ancestor::annotationBlock/@start/substring(., 2)) для выбора элемента when и, конечно, id(ancestor::annotationBlock/@start/substring(., 2))/@interval для выбора его атрибута interval.

Компактный способ использовать его внутри шаблона будет внутри шаблона значения атрибута

<xsl:template match="annotationBlock/u/w">
 <when interval="{id(ancestor::annotationBlock/@start/substring(., 2))/@interval}">
...