转换期间的 XSLT 问题

发布于 2024-09-24 10:51:27 字数 759 浏览 3 评论 0原文

<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 上工作。我没有任何解释。

您是否已经遇到了同样的问题? 我的代码有什么问题吗?

谢谢。

<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" />

I've got a problem during the transformation in xhtml, some elements like this : xmlns:ms="urn:schemas-microsoft-com:xslt" are insered in a lot of my xhtml tag.

ex:

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

I'm working on IIS6. and I've no explanations.

Did you have already the same problem?
What's wrong about my code?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眸中客 2024-10-01 10:51:27

排除结果前缀=“xmlns”>

我的代码有什么问题吗?

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

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

如果这些前缀被指定为以空格分隔的列表作为排除结果前缀属性的值,那么它们将不会出现在任何文字结果元素的序列化(输出)中。

例如

<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>

exclude-result-prefixes="xmlns">

What's wrong about my code?

This isn't quite meaningful, as there isn't any namespace prefix in the XSLT stylesheet, named "xmlns".

On the other side, the existing prefixes are: "ms", "infoRequest" and "xsl".

If these prefixes are specified as a blank-separated list as the value of the exclude-result-prefixes attribute, then they will not be present in the serialization (output) of any literal result element.

For example:

<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>

when this transformation is performed (on any source XML document -- not used), the result dosn't contain any unwanted namespaces:

<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>
乖乖哒 2024-10-01 10:51:27

您可以通过 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">

You can exclude these namespaces by suppressing them via the exclude-result-prefixes attribute. You need to list the namespace prefixes separated by whitespace:

<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">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文