Проблема новичка в XSLT: мне нужно подставить текстовое значение в XML-файл. Все остальные узлы должны быть оставлены без изменений. Вот мой входной файл (in.xml):
<?xml version="1.0" encoding="UTF-8"?>
<root>
<level1 attr1="val1">
<level2>in</level2>
</level1>
</root>
Вот мое XSLT-преобразование (subst.xsl):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="//node()">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="/root/level1/level2/text()">out</xsl:template>
</xsl:stylesheet>
Я запускаю его с помощью следующего Ant-скрипта (build.xml):
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="test" basedir=".">
<target name="test">
<xslt style="subst.xsl" in="in.xml" out="out.xml" />
</target>
</project>
И вот что я получаю (out.xml):
<?xml version="1.0" encoding="UTF-8"?><root>
<level1>
<level2>out</level2>
</level1>
</root>
Атрибут "attr1" для "level1" отсутствует.
Буду очень признателен, если кто-нибудь
- подскажите что не так с subst.xsl
OR
- подскажите, как заставить xslt-процессор просто скопировать несопоставленные узлы в выходной файл и сделать это вручную (что в моем случае подвержено ошибкам).