XSLT数据映射,字符<在数据中

时间:2012-05-01 21:06:19

标签: wcf xslt biztalk

我正在将XSLT数据映射从一个XML模式编写到另一个XML模式。目标模式有一个String字段,其中包含原始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>

1 个答案:

答案 0 :(得分:0)

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

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

虽然还有更新的版本/