Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 将子节点组合成字符串的xslt转换_Xml_Xslt_Xml Parsing - Fatal编程技术网

Xml 将子节点组合成字符串的xslt转换

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> </

我有一些看起来像这样的xml:

<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>&#xa;</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>&#10;</xsl:text>
</xsl:template>

</xsl:stylesheet>
Name1|ID1|City1;City2
Name2|ID2|City3