微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录

浏览: 2921

开篇介绍

此文章专门记录 XSLT 样式表转换过程中的语法问题

错误一 值与属性的倒置

修改了几次样式表,但还是一如既往的报错,报错信息如下:

[XML Task] Error: An error occurred with the following error message: "Attribute and namespace nodes cannot be added to the parent element after a text, comment, pi, or sub-element node has already been added.".

很明显 XML Task 已经告知了错误的原因,即属性或者命名空间的定义不能跟随已经存在的文之后。

正确的写法:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<newsalesorder>
<xsl:for-each select="SalesOrder/SalesOrderDetail">
<salesorderdetail>
<salesorderID>
<xsl:attribute name="detailID">
<xsl:value-of select="SalesOrderDetailID"/>
</xsl:attribute>
<xsl:value-of select="SalesOrderID"/>
</salesorderID>
</salesorderdetail>
</xsl:for-each>
</newsalesorder>
</xsl:template>
</xsl:stylesheet>

错误的写法 - SalesOrderID 在 XML Task 转换时,源 SalesOrderID 的值一经写出,后面再跟 Attribute 是不正确的,应该是 Attribute 在前。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<newsalesorder>
<xsl:for-each select="SalesOrder/SalesOrderDetail">
<salesorderdetail>
<salesorderID>
<xsl:value-of select="SalesOrderID"/>
<xsl:attribute name="detailID">
<xsl:value-of select="SalesOrderDetailID"/>
</xsl:attribute>
</salesorderID>
</salesorderdetail>
</xsl:for-each>
</newsalesorder>
</xsl:template>
</xsl:stylesheet>

正确的输出片段中 detailID 这个 Attribute 属性应该要定义在 SalesOrderID 71774 之前。

<?xml version="1.0" encoding="utf-8"?>
<newsalesorder>
<salesorderdetail>
<salesorderID detailID="110562">71774</salesorderID>
</salesorderdetail>
<salesorderdetail>
<salesorderID detailID="110563">71774</salesorderID>
</salesorderdetail>
<salesorderdetail>
<salesorderID detailID="110567">71776</salesorderID>
</salesorderdetail>

相关资源

XSLT 教程

推荐 0
本文由 BIWORK 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册