如何通过xslt获取子标记的替代值,然后获取父标记

时间:2013-11-27 05:11:45

标签: xml xslt

我有一个下面的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"/>

1 个答案:

答案 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(., '&#10;', '')"/>
            </xsl:for-each>
        </xsl:attribute>
    </Heading>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

注意:
当元素包含有意义的文本节点时,源XML不应该真正包含Title元素中的换行符。

另外,我必须修复结束头标记。