将斯特朗反斜杠转换为双反斜杠

  • 本文关键字:转换 json xslt-1.0
  • 更新时间 :
  • 英文 :


My xml:

<workorder>
    <specifications>
        <hpath>94  72</hpath>
        <classdesc></classdesc>
    </specifications>
</workorder>

我的 XSLT:

  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:xs="http://www.w3.org/2001/XMLSchema"  version="1.0">
<xsl:output method="text" encoding="UTF-8" />
        <xsl:template match="/">
            <xsl:apply-templates />
        </xsl:template>
        <xsl:template match="workorder">        
         <xsl:apply-templates select="specifications" />
    </xsl:template>
    <xsl:template match="specifications">
    <xsl:text>{
    "Hierarchy Path"="</xsl:text>
       <xsl:value-of select="translate(//workorder/specifications/hpath,'','\')" />
       <xsl:text>"
     }</xsl:text>
    </xsl:template>
    </xsl:stylesheet>

预期输出为:

   {
    "Hierarchy Path"="94 \ 72"
     }

电流输出为:

   {
    "Hierarchy Path"="94  72"
     }

问题是:当我将 json 格式作为"当前输出"发送时,不是有效的 json 格式。如果我作为"预期输出"发送,则它是有效的 json 格式。请帮忙。提前谢谢。

对于 XSLT 1.0,您需要一种递归方法。
您可以尝试类似此命名模板的内容。

<xsl:template name="jsonescape">
 <xsl:param name="str" select="."/>
  <xsl:choose>
    <xsl:when test="contains($str, '')">
      <xsl:value-of select="concat(substring-before($str, ''), '\' )"/>
      <xsl:call-template name="jsonescape">
        <xsl:with-param name="str" select="substring-after($str, '')"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="$str"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

并用你的字符串调用它(例如)。

<xsl:call-template name="jsonescape">
    <xsl:with-param name="str" select="//workorder/specifications/hpath"/>
</xsl:call-template>

相关内容

  • 没有找到相关文章