gpt4 book ai didi

xml - 只处理选定的节点

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:24 24 4
gpt4 key购买 nike

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>

缺少“level1”的属性“attr1”。

如果有人的话,我将不胜感激

  • 告诉我subst.xsl 有什么问题

  • 给我一个想法如何强制 xslt-processor 只复制不匹配的节点到输出文件并手动完成(在我的情况下这很容易出错)。

最佳答案

您的身份转换缺少属性(很明显)。改用这个:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

然后,只需添加您的最后一个模板。

关于xml - 只处理选定的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com