我有一个下面的XML结构,Title标签是父标签而Micro标签是子标签,在输出中我想要第一个Micro标签的值,即'K'然后是Title标签的第一个文本值,即','然后再次表示第二个Micro标签的值,即E,然后是Title标签的第二个文本值,即',和'等等 我正在使用此输入xml文件。
<Head>
<Title>
<Micro>K</Micro>, <Micro>
<Ind>L</Ind>
<Ind>X</Ind>E</Micro>, and <Micro>S</Micro> I</Title>
<Title>
<Micro>M</Micro>
<Ind>W</Ind>
<Ind>G</Ind> O</Title><Head>
输出应该是:
<Heading topic="K,E, and S I"/>
<Heading topic="M O"/>
答案 0 :(得分:0)
我相信这对你有用:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="Head/Title">
<Heading>
<xsl:attribute name="topic">
<xsl:for-each select="Micro/text() | text()">
<xsl:value-of select="translate(., ' ', '')"/>
</xsl:for-each>
</xsl:attribute>
</Heading>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
注意:
当元素包含有意义的文本节点时,源XML不应该真正包含Title元素中的换行符。
另外,我必须修复结束头标记。