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