gpt4 book ai didi

xml - 如何使用 XSLT 复制 XML 并添加到现有文本

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

我正在努力处理一个 XML 文件,我需要在其中添加一些大括号。我已经在使用 XSLT (1.0) 生成 XML 文件。唯一缺少的字符是 XML 文件中值周围的 { }。

源文件看起来像

<?xml version='1.0' encoding='utf-8'?>
<container>
<pan>
<id>1</id>
<input>
<url>thisfile-1.xml</url>
</input>
<output>
<url>thisoutput-1.txt</url>
</output>
</pan>
<pan>
<id>2</id>
<input>
<url>anotherfile-2.xml</url>
</input>
<output>
<url>oldoutput-2.txt</url>
</output>
</pan>
<pan>
<id>3</id>
<input>
<url>alsofile-3.xml</url>
</input>
<output>
<url>newoutput-3.txt</url>
</output>
</pan>
</container>

我需要改变的变量在container/pan/input/url生成的文件应该看起来像

<?xml version='1.0' encoding='utf-8'?>
<container>
<pan>
<id>1</id>
<input>
<url>{thisfile-1.xml}</url>
</input>
<output>
<url>thisoutput-1.txt</url>
</output>
</pan>
<pan>
<id>2</id>
<input>
<url>{anotherfile-2.xml}</url>
</input>
<output>
<url>oldoutput-2.txt</url>
</output>
</pan>
<pan>
<id>3</id>
<input>
<url>{alsofile-3.xml}</url>
</input>
<output>
<url>newoutput-3.txt</url>
</output>
</pan>
</container>

url 是可变的,只有输入 url 应该更改,而不是输出 url。

我尝试了一些字符串替换示例,但它们实际上是在替换内容,我想保留内容并只添加大括号。任何想法将不胜感激,我现在​​正处于死胡同。

我现在使用的XSLT是

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes"/>

<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="input/url/text()">
<xsl:text>replacetext</xsl:text>
</xsl:template>

</xsl:stylesheet>

这只会替换输入的 url ....这是我对 XSLT 的了解。

最佳答案

一切都设置好了。只是改变

<xsl:text>replacetext</xsl:text>

<xsl:value-of select="concat('{', ., '}')"/>

根据要求用 {} 包装现有的 input/url 文本 (.)。

XSLT

这是完整的 XSLT,您明智地基于身份转换加上上述修复:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes"/>

<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="input/url/text()">
<xsl:value-of select="concat('{', ., '}')"/>
</xsl:template>

</xsl:stylesheet>

关于xml - 如何使用 XSLT 复制 XML 并添加到现有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34634564/

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