gpt4 book ai didi

html - XSLT 解析存储在属性中的转义 HTML,并将该属性的内容转换为元素的内容

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:18 26 4
gpt4 key购买 nike

我坚持我认为应该做的简单的事情。我一直在四处寻找,但没有找到解决方案。希望你能帮助我。

我拥有的是一个 XML 元素,其属性包含转义的 HTML 元素:

<Booking>    
<BookingComments Type="RAM" comment="RAM name fred&lt;br/&gt;Tel 09876554&lt;br/&gt;Email fred@bla.com" />
</Booking>

我需要得到的是解析 HTML 元素和 @comment 属性中的内容,使其成为

元素的内容,如下所示:

<p>
RAM name fred<br/>Tel 09876554<br/>Email fred@bla.com
<p>

这是我的 XSLT:

<?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" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="xs fn" version="1.0">


<xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html4/loose.dtd" encoding="UTF-8" indent="yes" />

<xsl:template name="some-template">
<p>Some text</p>
<p>
<xsl:copy-of
select="/Booking/BookingComments[lower-case(@Type)='ram'][1]/@comment"/>
</p>
</xsl:template>
</xsl:stylesheet>

我读到复制是将转义的 HTML 元素恢复为正确元素的好方法。在这种特定情况下,因为它最初是一个属性,所以副本也将其转换为属性。所以我得到:

<p comment="RAM name fred<br/&gt;Tel 09876554<br/&gt;Email fred@bla.com"></p>

这不是我想要的。

如果我使用应用模板而不是复制,如:

<p>
<xsl:apply-templates select="/Booking/BookingComments[lower-case(@Type)='ram'[1]/@comment"/>
</p>

我得到 p 的内容只是作为文本,而不是恢复的 HTML 元素。

<p>RAM name fred&lt;br/&gt;Tel 09876554&lt;br/&gt;Email fred@bla.com</p>

我确定我遗漏了一些明显的东西。如果有任何帮助和提示,我将不胜感激!

最佳答案

我建议使用专用模板:

<!-- check if lower-casing @Type is really necessary -->
<xsl:template name="BookingComments[lower-case(@Type)='ram']/@comment">
<p>
<xsl:value-of select="." disable-output-escaping="yes" />
</p>
</xsl:template>

这样您就可以简单地将模板应用于属性。请注意,禁用输出转义可能会生成格式错误的输出。

关于html - XSLT 解析存储在属性中的转义 HTML,并将该属性的内容转换为元素的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2310618/

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