для моего исследовательского проекта, у меня есть этот документ в формате XML/TEIXSL для-каждый на разделенных пробелами значений атрибутов
<TEI xmlns="http://www.tei-c.org/ns/1.0" >
<body>
<div>
<p>
<span target="#" type="passage" ana="Tag957 Tag874">
<span target="#" ana=""/>
</span>
<seg><date when="1980-01-01" type="date_seg"/>blabla blabla
blabla blablablabla blablablabla blablablabla blablablabla bl
</seg>
<span target="#" type="passage" ana="Tag1657 ">
<span target="#" ana=""/>
</span>
<seg><date from="1980-01-03" to="1980-01-05" type="date_seg"/>blabla
</seg>
</p>
</div>
</body>
</TEI>
Мне нужно извлечь для каждого тега, содержащегося в пролете/@ ана: дата и длина строки следующего узла. С условием, что если мы включим атрибут date @from или @to, мне просто нужно значение @from. Что я должен был бы выглядеть так:
Tag957;1980-01-01;88
Tag874;1980-01-01;88
Tag1657;1980-01-03;11
Я попробовал это, но я не знаю, как выразить, что к ней каждый применены к значению одного атрибута в то время
<xsl:template match="tei:p">
<xsl:for-each select="tei:span">
<xsl:value-of select="./@ana"/>
<xsl:text>;</xsl:text>
<xsl:if test="following-sibling::tei:seg/tei:date/@from or following-sibling::tei:seg/tei:date/@to">
<xsl:value-of select="following-sibling::tei:seg/tei:date/@from"/>
</xsl:if>
<xsl:if test="following-sibling::tei:seg/tei:date/@when">
<xsl:value-of select="following-sibling::tei:seg/tei:date/@when"/>
</xsl:if>
<xsl:text>;</xsl:text>
<xsl:value-of select="string-length(following-sibling::tei:seg)"/>
<xsl:text>;</xsl:text>
<xsl:value-of select="$newLine"/>
</xsl:for-each>
</xsl:template>
Какой XSLT процессор, соответственно, которые XSLT версии сделать вы используете/можете использовать? –
Я использую XSLT-процессор в программном обеспечении Oxygen, тот, который я выбрал, это Saxon-HE9.6.0.7 –