首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSLT解析XML,并在每个父段之后写出一个带有行提要的平面文件。

XSLT解析XML,并在每个父段之后写出一个带有行提要的平面文件。
EN

Stack Overflow用户
提问于 2022-05-16 20:43:07
回答 1查看 54关注 0票数 1

我是xslt新手,我想用它从下面的xml输入中写出一个平面文件。

我还需要在每个父段之后提供一个行提要。

所以这个:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<ns0:test xmlns:ns0="urn:mynamespace.com:test">
   <Header>
      <OderId>9876</OderId>
      <CustomerNo>Cust123</CustomerNo>
      <Item>
         <Product>N1234565</Product>
         <SubItem>
            <DelDate>20220601</DelDate>
            <Quantity>10</Quantity>
         </SubItem>
         <SubItem>
            <DelDate>20220602</DelDate>
            <Quantity>5</Quantity>
         </SubItem>
      </Item>
      <Item>
         <Product>N54321</Product>
         <SubItem>
           <DelDate>20220701</DelDate>
           <Quantity>3</Quantity>
         </SubItem>
         <SubItem>
            <DelDate>20220702</DelDate>
            <Quantity>17</Quantity>
         </SubItem>
      </Item>
   </Header>
</ns0:test>

需要产生这样的结果:

代码语言:javascript
运行
复制
9876Cust123
N1234565
2022060110
202206025
N54321
202207013
2022070217

我将有更多的字段,但只需要写出每个父级内部的所有内容,而不希望指定每个字段。

谢谢理查德

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 03:07:29

AFAICT,你想做的是:

XSLT2.0

代码语言:javascript
运行
复制
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
    <xsl:for-each select="//*[*/text()]">
        <xsl:value-of select="*/text()"/>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

请注意,这需要支持XSLT2.0或更高版本的处理器。

XSLT1.0中,您可以执行以下操作:

代码语言:javascript
运行
复制
<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="/">
    <xsl:for-each select="//*[*/text()]">
        <xsl:for-each select="*/text()">
            <xsl:value-of select="."/>
        </xsl:for-each>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

不确定这种混在一起的不相关数据的格式有什么好处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72265399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档