如何处理xslt中不同的相同节点

amin89

我有这个 :

    <?xml version="1.0" encoding="UTF-8"?>

    <ns0:envelope xmlns:ns0="http://xxx/xxx/envelope/1.0">
    <ns0:header>
    </ns0:header>
    <ns0:body>
        <ns1:sales xmlns:ns1="http://xxx/xxx/sales/1.0/" standardversion="1.1" guid="0">
            <ns1:itemMeta>
                <ns1:provider/>
                <ns1:documentModified>2018-10-05T11:41:09.344+02:00</ns1:documentModified>
                <ns1:documentVersion>1</ns1:documentVersion>
                <ns1:documentType>XML</ns1:documentType>
            </ns1:itemMeta>
            <ns1:contentSet>
                <ns1:inlineXML>
                    <group>
                        <ns2:ptv>
                            <ns2:id type="xxx">15566</ns2:id>
                            <ns2:info>
                                <ns2:type>xxx</ns2:type>
                                <ns2:name>xxx</ns2:name>
                        </ns2:ptv>
                        <ns2:ptv>
                            <ns2:id type="xxx">13444</ns2:id>
                            <ns2:info>
                                <ns2:type>yyy</ns2:type>
                                <ns2:name>yyy</ns2:name>
                        </ns2:ptv>
                        <ns2:ptv>
                            <ns2:id type="xxx">155525</ns2:id>
                            <ns2:info>
                                <ns2:type>xxx</ns2:type>
                                <ns2:name>xxx</ns2:name>
                        </ns2:ptv>
                    </group>
                </ns1:inlineXML>
            </ns1:contentSet>
        </ns1:salesItem>
    </ns0:body>
</ns0:envelope>

如何在 xslt 中分别读取每个“ptv”行?

我的 xsl 是这样的:

<xsl:template match="/">
        <xsl:element name="ptv">
            <xsl:attribute name="mode">
                <xsl:value-of select="/body/salesItem/contentSet/inlineXML/group/ptv/@mode"></xsl:value-of>
            </xsl:attribute>
            <xsl:attribute name="timestamp">
                <xsl:value-of select="/body/salesItem/contentSet/inlineXML/group/ptv/@timestamp"></xsl:value-of>
            </xsl:attribute>
            <xsl:apply-templates select="/body/salesItem/contentSet/inlineXML/group/ptv/*" mode="content" />
        </xsl:element>
    </xsl:template>

如何单独处理所有对象“ptv”?(就像 foreach ..)

现在的结果是一个单标签“ptv”和里面“x”ptv的所有数据......

谢谢

编辑:这就是我需要的结果。请让我知道我该怎么做。

<?xml version="1.0" encoding="utf-8"?>


<ptv>
  <id type="xxx">15566</id>
<info> 
<type>xxx</type> 
<name>xxxx</name>
</info>
</ptv>

<ptv> 
<id type="xxx">15566</id>
<info> 
<type>xxx</type>
<name>xxxx</name>
</info>
</ptv> 

<ptv> 
<id type="xxx">15566</id>
<info> 
<type>xxx</type> 
<name>xxxx</name>
</info>
</ptv>
C队

如果你想处理多个元素,就像你ptv一样,只需用 选择它们xsl:for-each,或者更好的是,用模板...

试试这个 XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ns0="http://xxx/xxx/envelope/1.0"
    xmlns:ns1="http://xxx/xxx/sales/1.0/"
    xmlns:ns2="http://xxx/xxx/ptv/1.0/"
    exclude-result-prefixes="ns0 ns1 ns2"
    version="1.0">

  <xsl:output method="xml" indent="yes"/>

  <xsl:strip-space elements="*" />

  <xsl:template match="/">
    <xsl:apply-templates select="/ns0:envelope/ns0:body/ns1:salesItem/ns1:contentSet/ns1:inlineXML/group/ns2:ptv" />
  </xsl:template>

  <xsl:template match="ns2:ptv">
    <ptv mode="{@mode}">
      <xsl:apply-templates mode="content"/>
    </ptv>
  </xsl:template>

  <xsl:template match="*" mode="content">
    <xsl:element name="{local-name()}">
      <xsl:copy select="@*" />
      <xsl:apply-templates mode="content" />
    </xsl:element>
  </xsl:template>  
</xsl:stylesheet>

请注意,您的 XML 缺少名称空间声明 for ns2,所以我做了一些事情。还要注意 XSLT 如何处理 XML 中的名称空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何处理XSLT中的处理指令

来自分类Dev

xslt apply-template 如何处理相同的子树匹配?

来自分类Dev

如何处理具有相同ID但Python列中的值不同的数据帧中的记录

来自分类Dev

如何处理具有不同值的相同列标题

来自分类Dev

XSLT XPath:如果更新了一个子节点,从不同的子节点(对于同一个worker)获取数据-如何处理?

来自分类Dev

如何使用for循环在xslt中处理具有相同名称但属性值不同的xml标记

来自分类Dev

如何处理节点 acl 中的猫鼬连接延迟

来自分类Python

如何处理PyViz / datashader网络示例中的节点单击?

来自分类Dev

如何处理Excel宏中缺少的xml节点

来自分类Dev

如何处理在Django中不共享相同域的前端

来自分类Dev

如何处理R中以相同结构命名的几个对象?

来自分类Dev

SQL中的ORDER BY如何处理相同的值?

来自分类Dev

如何处理不同的编码

来自分类Dev

相同的哈希与相同的密钥如何处理?

来自分类Dev

在XSLT中返回不同的节点

来自分类Dev

如何处理API请求中的不同响应代码?

来自分类Dev

如何处理pygame中不同组件的时间

来自分类Dev

如何处理数据框中的不同日期格式

来自分类Dev

如何处理Expect块中的不同输出

来自分类Dev

当您仅知道节点名称的一部分时,XSLT如何处理节点?

来自分类Dev

Firebase 如何处理从不同设备对同一节点所做的更改?

来自分类Dev

XSLT如何处理多个嵌套元素?

来自分类Java

AST如何处理空节点

来自分类Dev

如何处理节点js嵌套错误

来自分类Dev

如何处理针对相同输入数据类型返回不同数据类型的api?

来自分类Dev

如何处理后退堆栈,以用不同的数据替换相同的片段

来自分类Dev

我应该如何处理名称相同但又不同的类的依赖关系?

来自分类Dev

Laravel 和本地化:如何处理不同国家的相同语言?

来自分类Dev

如何使用 XSLT 检查 XML 在不同节点中是否具有相同的值?

Related 相关文章

  1. 1

    如何处理XSLT中的处理指令

  2. 2

    xslt apply-template 如何处理相同的子树匹配?

  3. 3

    如何处理具有相同ID但Python列中的值不同的数据帧中的记录

  4. 4

    如何处理具有不同值的相同列标题

  5. 5

    XSLT XPath:如果更新了一个子节点,从不同的子节点(对于同一个worker)获取数据-如何处理?

  6. 6

    如何使用for循环在xslt中处理具有相同名称但属性值不同的xml标记

  7. 7

    如何处理节点 acl 中的猫鼬连接延迟

  8. 8

    如何处理PyViz / datashader网络示例中的节点单击?

  9. 9

    如何处理Excel宏中缺少的xml节点

  10. 10

    如何处理在Django中不共享相同域的前端

  11. 11

    如何处理R中以相同结构命名的几个对象?

  12. 12

    SQL中的ORDER BY如何处理相同的值?

  13. 13

    如何处理不同的编码

  14. 14

    相同的哈希与相同的密钥如何处理?

  15. 15

    在XSLT中返回不同的节点

  16. 16

    如何处理API请求中的不同响应代码?

  17. 17

    如何处理pygame中不同组件的时间

  18. 18

    如何处理数据框中的不同日期格式

  19. 19

    如何处理Expect块中的不同输出

  20. 20

    当您仅知道节点名称的一部分时,XSLT如何处理节点?

  21. 21

    Firebase 如何处理从不同设备对同一节点所做的更改?

  22. 22

    XSLT如何处理多个嵌套元素?

  23. 23

    AST如何处理空节点

  24. 24

    如何处理节点js嵌套错误

  25. 25

    如何处理针对相同输入数据类型返回不同数据类型的api?

  26. 26

    如何处理后退堆栈,以用不同的数据替换相同的片段

  27. 27

    我应该如何处理名称相同但又不同的类的依赖关系?

  28. 28

    Laravel 和本地化:如何处理不同国家的相同语言?

  29. 29

    如何使用 XSLT 检查 XML 在不同节点中是否具有相同的值?

热门标签

归档