[英]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使用之间存在差异的原因。
举例来说,在这里,您可以使用以下语法获得一些先前的答案:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.