我正在尝试从外部xsd文件中检索类型定义。在这个例子中,我的$attType
有一个名称空间前缀。但是在XPath中我用来获得我不想要前缀的定义。
问题是:如何?
<xsl:copy-of select="document('../file.xsd')//xs:simpleType[@name=$attType]" />
答案 0 :(得分:0)
稍微不那么脏的解决方案是使用local-name()
来正确确定命名空间内对象的名称。
这应该从元素和attirbutes中剥离命名空间,并保留文本:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
<xsl:template match="node()">
<xsl:element name="{local-name(.)}">
<xsl:apply-templates select="@*|*|text()"/>
</xsl:element>
</xsl:template>
<xsl:template match="text()">
<xsl:copy />
</xsl:template>
</xsl:stylesheet>