У меня есть файл XML с макетом, как это:Преобразование XML с вложенными атрибутами с помощью XSLT
<root>
<node>
<descriptors>
<attribute attr="important"/>
</descriptors>
<value>
Some
</value>
<value>
text
</value>
<value>
here.
</value>
<node>
</root>
Есть много узлов и каждый из них отличаются от элементов в descriptors
элементе. Мне нужно, чтобы извлечь текст, так что я бы это:
<element>
Sometexthere.
</element>
У меня есть преобразование XSL:
<xsl:template match="//attribute[@attr='important']">
<element>
<xsl:for-each select="../../value">
<xsl:value-of select="." />
</xsl:for-each>
</element>
</xsl:template>
Это вместо того, чтобы просто записывает все value
элементы в каждом node
элемента в файле. Я думаю, что я действительно не понимаю, как работает область действия (например, когда .
указывает на текущий элемент/узел, но каков текущий элемент/узел в цикле).
Как мне подойти к этому?
EDIT
Мой фактический XSL таблицы стилей (я преобразуя файл DOCX):
<xsl:template match="/">
<order>
<xsl:apply-templates/>
</order>
</xsl:template>
<xsl:template match="/w:document/w:body/w:p[w:pPr/w:pStyle/@w:val='Pealkiri1']">
<name>
<xsl:for-each select="w:t">
<xsl:value-of select="." />
</xsl:for-each>
</name>
</xsl:template>
Это дает тот же результат, но не содержит тег ''. Так что теперь это только текст. Довольно странно. –
j0ntech
Можете ли вы опубликовать остальную часть своей таблицы стилей? Я предполагаю, что вам не хватает '' или испортить ''. –
У меня есть шаблон, соответствующий '/', но это просто окружает текст моим собственным корневым элементом ('order'). – j0ntech