Xslt 在XSL样式表标记中删除XSL命名空间前缀
可以在xsl样式表中将Xslt 在XSL样式表标记中删除XSL命名空间前缀,xslt,xslt-1.0,Xslt,Xslt 1.0,可以在xsl样式表中将xsl:放到xsl标记中吗 例如,可以: <xsl:if test=''> 键入为: <if test=''> 编辑: 样式表中有HTML和XML节点 谢谢, 罗斯不这么认为。它们区分“语言”和任何用于输出的节点。不这样认为。它们区分“语言”和任何用于输出的节点。实际上,您可以通过定义XSLT(“http://www.w3.org/1999/XSL/Transform“”)命名空间作为默认命名空间: <stylesheet xml
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>
...
实际上,您可以通过定义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
前缀,除非您能想出一个不使用的好理由。当然可以,但是结合@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名称有关。这就是为什么XML1.0和XML1.1的用法存在差异
例如,这里有一些使用以下语法的previus答案:
是的。
但请注意,这与XSLT本身无关,而是与XML名称有关。这就是为什么XML1.0和XML1.1的用法存在差异
例如,这里有一些使用以下语法的previus答案:
是:尝试了@ysdx解决方案,它在html属性上抛出了错误。@Ross-没错。您可以为输出元素指定HTML名称空间,但无论如何,最好使用
xsl
前缀,因为这是每个人都习惯看到的。ok。re:因为这是每个人都习惯看到的。刚刚进行了实验,我看到test:b
也将与名称空间测试一起输出。很高兴知道。是的:尝试了@ysdx解决方案,它在html属性上抛出错误。@Ross-没错。您可以为输出元素指定HTML名称空间,但无论如何,最好使用xsl
前缀,因为这是每个人都习惯看到的。ok。re:因为这是每个人都习惯看到的。刚刚进行了实验,我看到test:b
也将与名称空间测试一起输出。很高兴知道。很好,但是这会在我的样式表上的HTML标记上抛出错误。很好,但是这会在我的样式表上的HTML标记上抛出错误。