转换期间的XSLT问题

时间:2010-09-22 12:18:49

标签: c# xml xslt namespaces transform

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml"  
    version="1.0"  
    xmlns:ms="urn:schemas-microsoft-com:xslt" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
    exclude-result-prefixes="xmlns">

    <xsl:output omit-xml-declaration="yes" method="xml" encoding="utf-8" />

我在xhtml转换过程中遇到了一个问题,有些元素是这样的:xmlns:ms =“urn:schemas-microsoft-com:xslt”在我的很多xhtml标签中都有一个问题。

例如:

<script type="text/javascript" src="/style/js/etablissement/videos.js" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:ms="urn:schemas-microsoft-com:xslt" ></script>

我正在研究IIS6。我没有解释。

你有同样的问题吗? 我的代码有什么问题?

谢谢。

2 个答案:

答案 0 :(得分:4)

  

排除-结果前缀= “的xmlns” &GT;

     

我的代码有什么问题?

这没有多大意义,因为XSLT样式表中没有任何名称空间前缀,名为"xmlns"

另一方面,现有的前缀是:"ms""infoRequest""xsl"

如果将这些前缀指定为空格分隔列表作为exclude-result-prefixes属性的值,则它们将不会出现在任何文字结果元素的序列化(输出)中。

例如

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml"
    version="1.0"
    xmlns:ms="urn:schemas-microsoft-com:xslt"
    xmlns:infoRequest="ControlSkin3"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    exclude-result-prefixes="ms infoRequest xsl">

    <xsl:output omit-xml-declaration="yes" method="xml" encoding="utf-8" />

    <xsl:template match="/">
      <html>
        <head>
          <script type="text/javascript" src="/style/js/etablissement/videos.js">
            /* Script code here */
          </script>
        </head>
      </html>
    </xsl:template>
</xsl:stylesheet>

执行此转换时(在任何源XML文档上 - 未使用),结果不包含任何不需要的命名空间

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" src="/style/js/etablissement/videos.js">
            /* Script code here */
        </script>
    </head>
</html>

答案 1 :(得分:3)

您可以通过exclude-result-prefixes属性禁止这些命名空间来排除这些命名空间。您需要列出由空格分隔的名称空间前缀:

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml"  
    version="1.0"  
    xmlns:ms="urn:schemas-microsoft-com:xslt" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
    exclude-result-prefixes="infoRequest ms">