gpt4 book ai didi

html - XSLT:添加元素,从文件中读取内容

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:51 24 4
gpt4 key购买 nike

我遇到了一个复杂的 XSLT 问题。

输入.xml

 <ITEM>
<ID>00050802</PRODUCTID>
<ISBN>SCKTVO</PRODUCTEAN>
<NAME>VOYAGE</PRODUCTNAME>
<OTHERDATA></OTHERDATA>
</ITEM>
<ITEM>
<ID>00033802</PRODUCTID>
<ISBN>OPDFJD</PRODUCTEAN>
<NAME>TEST</PRODUCTNAME>
<OTHERDATA></OTHERDATA>
</ITEM>

这里我想添加一个新元素<DESCRIPTION> .棘手的部分:内容在单独的文件中,描述文件的文件名是:(00050802.html,00033802.html === <ID>.html)。 .html 包含一些 html 代码,因此内容应包含在 CDATA 中。

输出.xml

<ITEM>
<ID>00050802</PRODUCTID>
<ISBN>SCKTVO</PRODUCTEAN>
<NAME>VOYAGE</PRODUCTNAME>
<OTHERDATA></OTHERDATA>
<DESCRIPTION><![CDATA[
00050802.html content
]]></DESCRIPTION>
</ITEM>
<ITEM>
<ID>00033802</PRODUCTID>
<ISBN>OPDFJD</PRODUCTEAN>
<NAME>TEST</PRODUCTNAME>
<OTHERDATA></OTHERDATA>
<DESCRIPTION><![CDATA[
00033802.html content
]]></DESCRIPTION>
</ITEM>

XSLT 版本无关紧要。

最佳答案

您可以使用 unparsed-text() 检索 HTML 文件的内容并确保使用 cdata-section-elements 使用 CDATA 序列化 DESCRIPTION 元素的内容xsl:output 声明的属性:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output cdata-section-elements="DESCRIPTION"/>

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

<xsl:template match="ITEM">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<DESCRIPTION>
<xsl:variable name="filename" select="concat(ID, '.html')"/>
<xsl:value-of select="$filename"/>
<xsl:value-of select="unparsed-text($filename)"/>
</DESCRIPTION>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

关于html - XSLT:添加元素,从文件中读取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35491483/

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