当属性名称包含特殊字符时,使用 xslt 转换 xml 结果后,输出未以 HTML 格式显示
Posted
技术标签:
【中文标题】当属性名称包含特殊字符时,使用 xslt 转换 xml 结果后,输出未以 HTML 格式显示【英文标题】:Output is not displaying in HTML format after transforming the xml result using xslt when the attribute name contains special character 【发布时间】:2022-01-01 02:34:46 【问题描述】:我的 xml 只有 1 个值,名称 =RDXXX-LOWER_DECK,值=10 毫米。当使用 xslt 进行转换时,我得到正确的输出如下:
<table>
<tr valign="top">
<td >RDXXX-LOWER_DECK</td>
<td >10.000000000000 mm</td>
</tr>
</table>
但是当我将 RDXXX-LOWER_DECK 替换为 RDXXX||LOWER_DECK(连字符被双管道替换)时,我没有得到输出。打印空值,名称打印为“属性”。
<table>
<tr valign="top">
<td >Attribute</td>
<td ></td>
</tr>
</table>
请告诉我如何保留 ||在输出中。
【问题讨论】:
请发布minimal reproducible example 显示示例输入和可执行样式表。 @mplungjan 链接的答案与这个问题完全无关。 【参考方案1】:我的 xml 只有 1 个值作为名称 =RDXXX-LOWER_DECK,值 = 10 毫米。 但是当我将 RDXXX-LOWER_DECK 替换为 RDXXX||LOWER_DECK 时(连字符替换为双管道)...
如果你的意思是你有这样的 XML:
<RDXXX-LOWER_DECK>10mm</RDXXX-LOWER_DECK>
你把它改成这样:
<RDXXX||LOWER_DECK>10mm</RDXXX||LOWER_DECK>
那么您将不再拥有格式良好的 XML 文档。元素 name 中不允许使用 |
字符。
...我没有得到输出。打印空值,名称打印为“属性”。
这很奇怪,因为您应该遇到错误。
【讨论】:
好的,如果不是 "|" ,除“-”(连字符)外,任何其他特殊字符也不起作用 我提供了一个指向 XML 规范的链接,该规范明确列出了元素名称中允许使用的字符(或字符范围)。所有其他字符都“不起作用”。请注意,该列表对第一个字符的限制更大。此外,一些较旧的处理器可能符合较旧的规范,该规范也允许较少的字符。您在这里要解决的实际问题是什么? 谢谢迈克尔。基本上客户希望在最终输出中的 RDXXX 和 LOWER_DECK 之间有一些特殊字符(表格将采用 html 格式)。第一列的属性名称为 RDXXX||LOWER_DECK,在第二列中,它的值将显示为 10mm。但是在使用 xslt 转换属性名称“RDXXX||LOWER_DECK”时,不会处理特殊字符。 我不明白您的客户为什么关心元素的名称。而且我不确定什么是“特殊字符”。为什么连字符或句号不令人满意?如果他们想要看起来像垂直线的东西,他们可以使用&#448;
LATIN LETTER DENTAL CLICK 字符。但这毫无意义,因为您可以使用原始的、未修改的 XML 作为输入来输出您想要的任何结果。
连字符已在某些属性名称中使用。所以他们不想再在这里使用。无论如何感谢迈克尔,通过阅读 XMl 规范链接,我得到了一些清晰,我将讨论使用句点而不是 ||。以上是关于当属性名称包含特殊字符时,使用 xslt 转换 xml 结果后,输出未以 HTML 格式显示的主要内容,如果未能解决你的问题,请参考以下文章