'version'不能是'Transformation'元素的子元素

时间:2014-09-11 16:00:30

标签: c# xslt xslcompiledtransform

我正在使用XslCompiledTransform.Load,每次收到错误消息时:

 'version' cannot be a child  of the 'Transformation' element

这是样式表:

<Transformation><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts" 
xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl"><xsl:output 
method="xml" /><xsl:template match="node() | @*"><xsl:copy><xsl:apply-templates 
select="@* | node()" /></xsl:copy></xsl:template><xsl:template match="testlist"><xsl:copy>
<xsl:apply-templates select="test"><xsl:sort select="requestor/code" /></xsl:apply-   
templates></xsl:copy></xsl:template></xsl:stylesheet></Transformation>

如果删除版本,我会收到错误消息:缺少强制属性&#39;版本&#39; 我是否收到错误,因为我正在使用Tag&#39; Transformation&#39;?

中的样式表

1 个答案:

答案 0 :(得分:1)

您的问题的答案是“是”。您确实收到错误,因为xsl:stylesheet元素中只有Transformation元素

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

xsl:stylesheet需要是根元素,因此需要删除Transformation

话虽如此,也许你打算这样做....

<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
  xmlns:user="urn:my-scripts" 
  xmlns:exsl="http://exslt.org/common" 
  extension-element-prefixes="exsl">
   <xsl:output method="xml"/>

   <xsl:template match="/">
      <Transformation>
         <xsl:apply-templates select="@* | node()"/>
      </Transformation>
   </xsl:template>

   <xsl:template match="node() | @*">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="testlist">
      <xsl:copy>
         <xsl:apply-templates select="test">
            <xsl:sort select="requestor/code"/>
         </xsl:apply-templates>
      </xsl:copy>
   </xsl:template>
 </xsl:stylesheet>