我有一个布局如下的 XML 文件:
<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
元素。我想我并不真正理解作用域的工作方式(比如.
指向当前元素/节点的时间,但循环中的当前元素/节点是什么)。
我应该如何处理这个?
编辑
我实际的 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>