使用XSLT转换展平嵌套的XML/层次结构
我有一个嵌套的分层xml结构,它将使用xsl转换进行扁平化。以下是场景使用XSLT转换展平嵌套的XML/层次结构,xml,xslt,xpath,soa,Xml,Xslt,Xpath,Soa,我有一个嵌套的分层xml结构,它将使用xsl转换进行扁平化。以下是场景 <company> <Managers> <Manager> <Name>Matt</Name> <ID>1</ID> <Manager> <Name>Joe</Name> <ID>11</ID&
<company>
<Managers>
<Manager>
<Name>Matt</Name>
<ID>1</ID>
<Manager>
<Name>Joe</Name>
<ID>11</ID>
<Manager>
<Name>Dave</Name>
<ID>111</ID>
</Manager>
</Manager>
</Manager>
<Manager>
<Name>mike</Name>
<ID>2</ID>>
</Manager>
</Managers>
</company>
更好的选择是通过@Mathias Mueller
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="Manager">
<xsl:value-of select="Name" />
<xsl:text>: </xsl:text>
<xsl:value-of select="ID" />
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:transform>
输出:
Matt: 1 Joe: 11 Dave: 111 mike: 2
你试过什么吗?阅读任何教程?你到底有什么困难?嗯,是的。我认为问题是什么是正确的XPath。XSLT非常简单。将来,最好发布一个您尝试过的示例。请不要做标记垃圾邮件,并限制为直接相关的标记。如果您在
xsl:text
中输出空格字符,那么为什么不将:
也放在xsl:text
中呢?另外,我认为没有必要匹配管理者,我使用空格字符是因为它会被吸收,但是:不会。不过,您的方法更好,我不认为在模板中使用应用模板。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="//Managers">
<xsl:for-each select="descendant-or-self::Manager">
<xsl:value-of select="Name" />: <xsl:value-of select="ID" /><xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:transform>
Matt: 1 Joe: 11 Dave: 111 mike: 2