【问题标题】:Transform & in XSLT?在 XSLT 中转换 & ?
【发布时间】:2010-10-20 19:41:24
【问题描述】:

我对 XSLT 比较陌生。我遇到了一个我不知道如何解决的问题。我有一个相当大的 XML 文档,我正试图将其转换为另一个更小、更精细的 XML 文档。

大型 XML 文档具有这种风格:

 <Property>
  <name>Document name</name>
  <value>SomeValue</value>   
 </Property>
...
 <Property>
  <name>Document Title</name>
  <value>Me %amp; you</value>   
 </Property>

如何在值元素之间转换值并保持“&amp”;完好无损的。显然,由于文本中的与号转义,转换此 XML 会导致错误。

注意:这个大型 XML 是由从服务器提取数据的应用程序生成的。所以我有点卡在处理转义符号:(

【问题讨论】:

  • 你的问题不清楚。每当您使用 XML(或 HTML)方法序列化您的输出时,&amp;amp; 字符将按照 XML 规范要求转义为 &amp;amp; 实体引用。只有当您使用text 方法序列化输出时,才不会执行转义。
  • 好问题,+1。请参阅我的答案以获取具有所需属性的转换的简单示例。

标签: xml xslt xslt-2.0


【解决方案1】:

这是一个简单(而且非常基础)的示例,使用了身份规则:

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

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

当此转换应用于提供的 XML 文件时

<t>
 <Property>
  <name>Document name</name>
  <value>SomeValue</value>
 </Property>
...
 <Property>
  <name>Document Title</name>
  <value>Me &amp; you</value>
 </Property>
</t>

转化为自身(身份):

<t>
   <Property>
      <name>Document name</name>
      <value>SomeValue</value>
   </Property>
...
 <Property>
      <name>Document Title</name>
      <value>Me &amp; you</value>
   </Property>
</t>

并且字符&amp;amp;被保留。

【讨论】:

  • +1 感谢 Dimitre!一旦我进行一些测试,我会检查这个!
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2019-10-06
  • 2018-09-08
  • 2019-12-21
相关资源
最近更新 更多