如何使用XSLT在XML文档中添加根节点标记



Iam通过xmlsource解析SSIS中的xml文档。它没有任何根标记。因此,我试图通过XSLT将根标记添加到我的xml文档中,但得到的错误是

〔XML任务〕错误:出现错误,错误消息如下:"有多个根元素。第11行,位置2。"。

用来添加根元素的XSL是什么。?请帮忙。。这是非常紧急的。。

请在下面找到xml源

<organizational_unit>
  <box_id>898</box_id>
  <hierarchy_id>22</hierarchy_id>
  <parent_box_id>0</parent_box_id>
  <code>Team</code>
  <description />
  <name>CAPS Teams</name>
  <manager_title />
  <level>0</level>
</organizational_unit>
<organizational_unit>
  <box_id>967</box_id>
  <hierarchy_id>31</hierarchy_id>
  <parent_box_id>0</parent_box_id>
  <code>main</code>
  <description />
  <name>Protegent</name>
  <manager_title />
  <level>0</level>
    <organizational_unit>
       <box_id>968</box_id>
       <hierarchy_id>31</hierarchy_id>
       <parent_box_id>967</parent_box_id>
       <code>19L</code>
       <description>19L</description>
       <name>19L</name>
       <level>1</level>
    <managers>
       <manager>
          <hierarchy_mgr_id>243</hierarchy_mgr_id>
          <hierarchy_id>31</hierarchy_id>
          <box_id>968</box_id>
          <rep_id>19499</rep_id>
          <unique_rep_id>100613948</unique_rep_id>
         <first_name>Ed</first_name>
         <last_name>Kill</last_name>
      </manager>
    </managers>
    </organizational_unit>
    <organizational_unit>
        <box_id>1152</box_id>
        <hierarchy_id>31</hierarchy_id>
        <parent_box_id>967</parent_box_id>
        <code>UNKNOWN_m</code>
        <description>Unknown Reps</description>
        <name>Unknown Reps</name>
        <level>1</level>
    </organizational_unit>
</organizational_unit>

您使用哪种XSLT处理器,如何使用它?我通常不建议使用字符串处理来构造XML,但如果您有一个没有根元素的片段,那么进行字符串连接"<root>" + fragment + "</root>"可能是获得格式良好的文档的最简单方法。XSLT可以处理片段,但如何处理取决于您使用的XSLT处理器或XML解析器,例如,.NET可以使用XmlReaderXmlReaderSettingsConformanceLevel设置为片段,然后可以将其加载到XPathDocument中(用于处理XSLT1.0和XslCompiledTransform),也可能加载到Saxon的XdmNode中(尽管我不确定我是否记得正确)。

样式表只需执行

<xsl:template match="/">
  <root>
    <xsl:copy-of select="node()"/>
  </root>
</xsl:template>

以将所有顶级节点封装到CCD_ 8元素中。

最新更新