1

我正在编写从一个 XML 模式到另一个 XML 模式的 XSLT 数据映射。目标模式有一个字符串字段,其中包含原始 XML 的副本。我知道我必须将 XML 中的控制字符转换为&lt;&gt;. 我已经做到了。我遇到的问题是 XML 中的数据也有&lt;,也有&gt;。这会导致问题,因为我将 XML 发送到 WCF-SQL 适配器,并且当它&lt;在我的数据中命中时,它会尝试将其转换为<导致 XML 验证失败。

这是我的 XSLT 的一个片段:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>

  <xsl:template match="*" mode="serialize">
    <xsl:text>&lt;</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:text>&gt;</xsl:text>
    <xsl:apply-templates mode="serialize"/>
    <xsl:text>&lt;/</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:text>&gt;</xsl:text>
  </xsl:template>
  <xsl:template match="/">
    <proc_Insert xmlns="http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo">
      <StagingXML>
        <xsl:variable name="nodestring">
          <xsl:apply-templates select="*" mode="serialize"/>
        </xsl:variable>
        <xsl:value-of select="$nodestring"/>
      </StagingXML>
    </proc_Insert>
  </xsl:template>
</xsl:stylesheet>
4

1 回答 1

0

您需要引用内容,一段真正古老的代码(我认为早于 xslt 1.0 :-) 可以找到它

http://www.openmath.org/cdfiles2/xsl/verb.xsl

虽然周围也有更新的版本/

于 2012-05-01T22:16:24.230 回答