首页 > 代码库 > 微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录
微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录
开篇介绍
此文章专门记录 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 教程
更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server) 如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。
微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。