Xml 身份转换不使用@*

Xml 身份转换不使用@*,xml,xslt,xalan,Xml,Xslt,Xalan,我试图创建一个只影响某些元素的xslt转换。为了保持其他元素和属性不变,我使用以下标识模板: <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> 似乎是在xalan中处理属性匹配器@*时出现了一些错误: 我没有办法修改用于转换的库

我试图创建一个只影响某些元素的xslt转换。为了保持其他元素和属性不变,我使用以下标识模板:

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
似乎是在xalan中处理属性匹配器
@*
时出现了一些错误:

我没有办法修改用于转换的库,所以我的问题是,是否有办法在不指定所有可能的属性名称(我事先不知道)的情况下解决这个问题


谢谢

如果您只想转换某些元素,而不必转换任何属性,那么您可以用
替换
。我不知道这是否解决了Xalan的问题。问题在于这个匹配器:
@*
。我可以通过指定属性名称来列出属性,如
@att1 |@att2 | node()
,但这并不能真正解决我的问题,因为我没有所有可能通过的XML的XSD。我的建议是尝试使用
,它在
匹配中不使用属性通配符
应用模板
,仅在
副本中使用。这就是我所能建议的,除了像尝试使用
属性::*
而不是
@*
这样的美容改变。您将必须尝试任何操作是否有效,当然,select=“@*”
副本可能会导致相同的异常,但只要您想使用已损坏的XSLT实现和标识转换,您只能尝试更改一些操作。不幸的是,这些操作都不起作用<代码>属性::*
产生相同的错误,您的其他建议似乎对我不起作用。您在
之后错过了
,应该是
。如果您只想转换某些元素,而不必转换任何属性,那么您可以将
替换为
。我不知道这是否解决了Xalan的问题。问题在于这个匹配器:
@*
。我可以通过指定属性名称来列出属性,如
@att1 |@att2 | node()
,但这并不能真正解决我的问题,因为我没有所有可能通过的XML的XSD。我的建议是尝试使用
,它在
匹配中不使用属性通配符
应用模板
,仅在
副本中使用。这就是我所能建议的,除了像尝试使用
属性::*
而不是
@*
这样的美容改变。您将必须尝试任何操作是否有效,当然,select=“@*”
副本可能会导致相同的异常,但只要您想使用已损坏的XSLT实现和标识转换,您只能尝试更改一些操作。不幸的是,这些操作都不起作用<代码>属性::*
产生相同的错误,您的其他建议似乎对我不起作用。您在
之后错过了
,应该是
ERROR:  'java.lang.NullPointerException'
ERROR:  'com.sun.org.apache.xalan.internal.xsltc.TransletException: java.lang.NullPointerException'