Xml 使用XSLT生成XSLT,名称空间前缀
我想使用XSLT将一个XML转换成另一个XSLT。在输出XSLT中,名称空间前缀和uri应由XML文档决定。例如,XML文档是Xml 使用XSLT生成XSLT,名称空间前缀,xml,xslt,Xml,Xslt,我想使用XSLT将一个XML转换成另一个XSLT。在输出XSLT中,名称空间前缀和uri应由XML文档决定。例如,XML文档是 <namespaces> <namespace> <prefix>abc</prefix> <uri>my.domain.abc</uri> </namespace> <namespace> <prefi
<namespaces>
<namespace>
<prefix>abc</prefix>
<uri>my.domain.abc</uri>
</namespace>
<namespace>
<prefix>def</prefix>
<uri>my.domain.def</uri>
</namespace>
</namespaces>
abc
我的域名
def
my.domain.def
输出XSLT应该类似于:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:abc="my.domain.abc"
xmlns:def="my.domain.def"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"/>
</xsl:stylesheet>
我试过这种方法,但没有成功:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
<xsl:template match="/">
<axsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:for-each select="/namespaces/namespace">
<xsl:namespace name="{prefix}" select="uri"/>
</xsl:for-each>
</axsl:stylesheet>
</xsl:template>
</xsl:stylesheet>
错误为
前缀:缺少上下文项
。有没有想过如何做到这一点 在修复了示例对我有效之后,XSLT片段在xsl:stylesheet
上缺少version
属性。您得到的错误听起来好像您没有提供输入文档,或者没有使用原子值或在未定义上下文项的函数中使用某些代码。那么,一个最小但完整的示例如何让我们重现问题?您使用哪个XSLT处理器?@MathiasMüller这是实际的消息。请注意,“prefix”是我的xslt@mattsun中的前缀,您使用哪个xslt处理器来给出错误消息?@mattsun您是对的,当然,我没有仔细阅读。我删除了我的胡说八道。您是显示了您正在使用的整个样式表,还是在发布到这里之前对其进行了简化?在修复示例对我有效后,XSLT代码段在xsl:stylesheet
上缺少version
属性。您得到的错误听起来好像您没有提供输入文档,或者没有使用原子值或在未定义上下文项的函数中使用某些代码。那么,一个最小但完整的示例如何让我们重现问题?您使用哪个XSLT处理器?@MathiasMüller这是实际的消息。请注意,“prefix”是我的xslt@mattsun中的前缀,您使用哪个xslt处理器来给出错误消息?@mattsun您是对的,当然,我没有仔细阅读。我删除了我的胡说八道。你是展示了你正在使用的整个样式表,还是在这里发布之前简化了它?