0
我正在使用XSLT转换ivy.xml文件,我基本上想更新特定dependency
标记的rev
属性。我的问题是与conf
属性,我想它保持完全一样,不幸的是>
得到转换为>
。我常青藤文件看起来像这样:使用XSLT处理属性时未保留字符
<ivy-module version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="foo" module="libfoo" revision="1.0.1"/>
<configurations>
</configurations>
<publications>
<artifact name="libfoo" type="jar" conf="default" />
</publications>
<dependencies>
<dependency org="easymock" name="easymock" rev="2.5.2" conf="test->default,class-extension"/>
</dependencies>
</ivy-module>
我的XSL是这样的:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output />
<xsl:param name="dependency.rev" />
<xsl:param name="dependency.org" />
<xsl:param name="dependency.name" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="dependency">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
<xsl:choose>
<xsl:when test="@name=$dependency.name">
<xsl:attribute name="rev">
<xsl:value-of select="$dependency.rev" />
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
和我的输出是这样的:
<dependency org="easymock" name="easymock" rev="2.5.2" conf="test->default,class-extension"/>
我试过在一个明确的设定disable-output-escaping="no"
设置了conf属性,但那不起作用
<xsl:attribute name="conf">
<xsl:value-of select="@conf" disable-output-escaping="yes" />
</xsl:attribute>
什么破解XML解析器无法正确读取结果? – 2011-02-08 01:33:47
你得到的结果没有什么不好。 `test->`和`test->`表示完全相同的字符串。 – 2011-02-08 04:19:28