【问题标题】:Escaping "quot" using xslt 1.0 from HTML attribute使用 HTML 属性中的 xslt 1.0 转义“quot”
【发布时间】:2015-10-19 09:28:50
【问题描述】:

我的 HTML 标签如下:

<input type="hidden" name="englishLongDesc" value ="Box height is 5.0 mm (2.9"/74mm length) used for packing"/>

我使用了如下所示的 XSLT 1.0 来获取它的值:

<content name="Box Description" >
          <xsl:value-of select="./input[@name='englishLongDesc']/@value" />
</content>

我得到答案盒子高度是 5.0 毫米(2.9

因为中间有"(quot)。

问题:我无法更改 HTML 值,但我可以通过 XSLT 获取完整值(即 用于包装的盒子高度为 5.0 毫米(2.9 英寸/74 毫米长度)) 1.0?

【问题讨论】:

    标签: html xml xslt xslt-1.0


    【解决方案1】:

    否*,因为 XSLT 代码正在做“正确”的事情。损坏的是 HTML。

    这个:

    <input type="hidden" name="englishLongDesc" value ="Box height is 5.0 mm (2.9"/74mm length) used for packing"/>
    

    是损坏的 HTML。 value属性的内容真的是:

    Box height is 5.0 mm (2.9
    

    而这一点只是垃圾:

    /74mm length) used for packing"
    

    [*] 因为这是垃圾标签汤,DOM 模型很可能在某个地方仍然包含一个杂散的 text() 节点。通过分析 DOM 模型本身(编写一个执行此操作的 XSLT 样式表),您可能能够找出一个额外的表达式来获取尾随位并使用连接来解决问题。

    【讨论】:

    • 那么,有没有办法完全获取呢?
    • 不直接。这将取决于解析器处理标签汤的能力以及它生成的 DOM 结构。因为 XSLT 在文档的 DOM/XPath 模型上运行,所以您完全依赖于解析器可以提供的任何“优雅”降级。
    • 最好的解决方案是将 HTML 编辑为真正的 HTML,是的。 IE。通过正确转义输出来解决问题。
    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多