当前位置: 首页 > 知识库问答 >
问题:

XSLT:将包含子节点的输入xml复制到XSLT中的属性

曾嘉瑞
2023-03-14

您能帮助我使用xslt实现以下预期输出吗。

输入

<Order OrderNotificationID="123456" OrderNo="40003773" >       
<OrderLines>
<OrderLine Action="CANCEL" EAN="" LineNo="1"> </OrderLine>
        <OrderLine Action="CANCEL" EAN="" LineNo="4"> </OrderLine>
    </OrderLines> 
</Order>     

预期输出

<NewXML InputXML= "<Order OrderNotificationID="123456" OrderNo="40003773"><OrderLines>
<OrderLine Action="CANCEL" EAN="" LineNo="1"/>
<OrderLine Action="CANCEL" EAN="" LineNo="4"/>
</OrderLines></Order>" />

共有1个答案

庾和昶
2023-03-14

如果您真的想将输入XML的序列化放入属性值中,那么您需要编写代码或使用库将XML序列化为字符串,示例

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

  <xsl:import href="http://lenzconsulting.com/xml-to-string/xml-to-string.xsl"/>

  <xsl:template match="/">
      <xsl:variable name="serialized-xml">
          <xsl:apply-templates mode="xml-to-string"/>
      </xsl:variable>
      <NewXML InputXml="{$serialized-xml}"/>
  </xsl:template>

</xsl:stylesheet>

从中使用库http://lenzconsulting.com/xml-to-string/. 但是您需要理解格式良好的XML输出意味着像

<NewXML InputXml="&lt;Order OrderNotificationID=&quot;123456&quot; OrderNo=&quot;40003773&quot;&gt;       &#xA;&lt;OrderLines&gt;&#xA;&lt;OrderLine Action=&quot;CANCEL&quot; EAN=&quot;&quot; LineNo=&quot;1&quot;&gt; &lt;/OrderLine&gt;&#xA;        &lt;OrderLine Action=&quot;CANCEL&quot; EAN=&quot;&quot; LineNo=&quot;4&quot;&gt; &lt;/OrderLine&gt;&#xA;    &lt;/OrderLines&gt; &#xA;&lt;/Order&gt;" />

 类似资料:
  • 我需要将子元素复制到父元素中。 输入 期望输出 我尝试的内容(输出与输入保持相同): 我肯定会错过一些非常简单的事情。子元素与父元素具有相同的名称,这应该不是问题?

  • 我需要以下xslt代码方面的帮助。我的意见如下: 我的预期输出为: 我曾尝试使用*/text()获取值节点的值,但我只从第一个孩子获得文本。将来我有很多这样的子元素。 提前谢谢。 你好,Minakshi

  • 我想从父节点复制到子节点。我真的不确定这是如何实现的。 我的源xml 我想得到输出为 我想要XSLT1.0中的解决方案。 我想将这些节点复制到子节点 谢谢。

  • 我有一个XML: 我想向根元素:/doc添加一个属性(名称空间),以便输出如下所示: 我尝试了三种xslt(跳过了默认的“复制所有”部分以减少问题的长度)。 xslt1:见下文,问题在于将空名称空间xmlns=”“添加到/doc的所有子节点(即:/doc/tag1和/doc/tag2) Xslt2:见下文,问题是“ns”被添加到根节点:和 xslt3:请参见下文,问题是报告了错误:未定义名称空间前

  • 我认为主要的问题是如何编写exeption表达式来去除输出结果中的“S-3”和“Z”属性。但是怎么做呢? 源代码 期望输出 我的xslt代码(S-3和Z属性仍然存在,但不应该)https://xsltfiddle.liberty-development.net/3NSTbfj/1 我会感激任何解决办法

  • 您能帮助如何用子节点分割成半节点吗? 输入: 输出: 不幸的是,我对xslt没有经验,也没有找到这样的例子。 更新后,我尝试了下面建议的方法之一,并有这个https://xsltfiddle.liberty-development.net/jyH9rNq/3节点不复制 xslt: 输出: