繁体   English   中英

在XSL样式表标签中删除XSL名称空间前缀

[英]Dropping the XSL namespace prefix in XSL Stylesheet Tags

是否可以将xsl:放到XSL样式表中的XSL标签上?

例如,可以:

<xsl:if test=''>

输入为:

<if test=''>

编辑:样式表中具有HTML和XML节点。

谢谢罗斯

实际上,您可以通过将XSLT(“ http://www.w3.org/1999/XSL/Transform”)命名空间定义为默认命名空间来做到这一点:

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

缺点是您必须为“域”名称空间使用另一个前缀:

 <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://whatever" xmlns:html="http://www.w3.org/1999/xhtml">
    <template match="foo:bar">
       <html:form>
           ...
       </html:form>
    </template>
 </stylesheet>

当然可以,但是将@ysdx和@Jon的答案结合在一起,请注意您的XSLT处理器需要区分XSLT元素和输出元素。 例如,以下样式表在Firefox中引发错误:

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <!-- <b> is not a valid XSLT element -->
        <b><value-of select="'test'"/></b>
    </template>
</stylesheet>

这意味着您需要限定输出元素的名称,如下所示:

<stylesheet version="1.0" 
         xmlns="http://www.w3.org/1999/XSL/Transform"
         xmlns:test="http://whatever">
    <template match="/">
        <test:b><value-of select="'test'"/></test:b>
    </template>
</stylesheet>

这可能是有问题的。 您应该坚持使用常规的xsl前缀,除非您有充分的理由不这样做。

不要这样 它们区分“语言”和打算输出的任何节点。

是。

但是请注意,这与XSLT本身无关,而与XML名称无关。 这就是XML 1.0和XML 1.1使用之间存在差异的原因。

举例来说,在这里,您可以使用以下语法获得一些先前的答案:

使用xml作为xsl变量

XSLT递归替换多字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM