【发布时间】:2011-01-07 06:11:11
【问题描述】:
我对使用XSL 有点陌生。我正在尝试使用 XSL 将 XML 文件转换为具有不同结构的另一个 XML 文件。 XML 的 input 部分如下所示:
<tag>
<Keyword>Event: Some Text</Keyword>
<Keyword>Group: Some Text</Keyword>
<Keyword>Other: Some Text</Keyword>
</tag>
我希望所需的输出是:
<tag>
<event> Some Text </event>
<group> Some Text </group>
<other> Some Text </other>
</tag>
我的当前 XSL 文件:
<xsl:for-each select="tag">
<xsl:if test="starts-with(Keyword, 'Event: ')">
<event>
<xsl:value-of select="substring-after(Keyword, 'Event: ')"/>
</event>
</xsl:if>
<xsl:if test="starts-with(Keyword, 'Group: ')">
<group>
<xsl:value-of select="substring-after(Keyword, 'Group: ')"/>
</group>
</xsl:if>
<xsl:if test="starts-with(Keyword, 'Other: ')">
<other>
<xsl:value-of select="substring-after(Keyword, 'Other: ')"/>
</other>
</xsl:if>
</xsl:for-each>
当前输出只显示事件节点,不显示剩余节点:
<tag>
<event> Some Text </event>
</tag>
我尝试在 XSL 中将“组”部分与“事件”部分切换,但是可能由于输入 XML 中关键字节点的顺序,所有子节点都没有显示。那么如何读取所有关键字节点并将它们转换为相应的新节点进行显示?
【问题讨论】:
标签: xml xslt if-statement foreach