Xml 将子节点组合成字符串的xslt转换
我有一些看起来像这样的xml:Xml 将子节点组合成字符串的xslt转换,xml,xslt,xml-parsing,Xml,Xslt,Xml Parsing,我有一些看起来像这样的xml: <Lists> <ListA> <Item name = "Name1" ID = "ID1" shoesize = "10"> <AddressList> <Enum>City1</Enum> <Enum>City2</Enum> </
<Lists>
<ListA>
<Item
name = "Name1"
ID = "ID1"
shoesize = "10">
<AddressList>
<Enum>City1</Enum>
<Enum>City2</Enum>
</AddressList>
</Item>
<Item
name = "Name2"
ID = "ID2"
shoesize = "13">
<AddressList>
<Enum>City3</Enum>
</AddressList>
</Item>
</ListA>
<ListB>
...
</ListB>
</Lists>
Name1|ID1|City1;City2
Name2|ID2|City3
这就是我到目前为止所做的:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Item"><xsl:value-of select="@name"/>|<xsl:value-of select="@ID"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:strip-space elements="*"/>
<xsl:output omit-xml-declaration="yes" indent="yes" />
</xsl:stylesheet>
|
;
我不知道如何循环地址列表并将其放入单个字段中。我还想忽略ListB
我相信这是基本的东西,但我不知道xslt,我读过的所有东西似乎都假定有一定的知识。。。另外,我找不到足够的快速入门指南来解决这个问题。给出了格式良好的输入,例如: XML
<root>
<ListA>
<Item name="Name1" ID="ID1" shoesize="10">
<AddressList>
<Enum>City1</Enum>
<Enum>City2</Enum>
</AddressList>
</Item>
<Item name="Name2" ID="ID2" shoesize="13">
<AddressList>
<Enum>City3</Enum>
</AddressList>
</Item>
</ListA>
<ListB>
...
</ListB>
</root>
请发布一个格式良好的输入示例-一个具有单个根元素且元素名称中没有空格的示例。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/root">
<xsl:apply-templates select="ListA"/>
</xsl:template>
<xsl:template match="Item">
<xsl:value-of select="@name"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="@ID"/>
<xsl:text>|</xsl:text>
<xsl:for-each select="AddressList/Enum">
<xsl:value-of select="." />
<xsl:if test="position()!=last()">
<xsl:text>;</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
Name1|ID1|City1;City2
Name2|ID2|City3