怎样转义网站内容抓取规则中的单双引号

网站内容抓取软件工具包MetaSeeker自动生成的抓取规则文件是XSLT指令文件,XSLT使用XPath定位和匹配网站内容,如果被抓取的内容中有引号,包括双引号和单引号,使用MetaSeeker的自定义XPath规则时必须要考虑转义问题,因为在XSLT语句中一个XPath表达式的最外层已经使用了双引号,而在XPath表达式内部又用单引号将字符串括起来,也就是说,单引号和双引号都用过了,如果再遇到含有单引号或者双引号的被抓取的内容,必须要转移。有一个很好的例子,抄录如下:

       <xsl:template name="captureQuot">
               <xsl:param name="processText"/>
               <xsl:call-template name="captureSingleQuot">

                       <xsl:with-param name="processText">
                               <xsl:call-template name="captureDoubleQuot">
                                       <xsl:with-param name="processText" select="$processText" />
                               </xsl:call-template>
                       </xsl:with-param>
               </xsl:call-template>

       </xsl:template>
       <xsl:template name="captureSingleQuot">
               <xsl:param name="processText"/>
               <xsl:choose>
                       <xsl:when test="contains($processText, &quot;'&quot;)">

                               <xsl:value-of select="substring-before($processText,&quot;'&quot;)" />
                               <xsl:text>\'</xsl:text>
                               <xsl:call-template name="captureSingleQuot">
                                       <xsl:with-param name="processText" select="substring-after($processText,&quot;'&quot;)"/>

                               </xsl:call-template>
                       </xsl:when>
                       <xsl:otherwise>
                               <xsl:value-of select="$processText"/>
                       </xsl:otherwise>
               </xsl:choose>

       </xsl:template>
       <xsl:template name="captureDoubleQuot">
               <xsl:param name="processText"/>
               <xsl:choose>
                       <xsl:when test="contains($processText, '&quot;')">

                               <xsl:value-of select="substring-before($processText,'&quot;')" />
                               <xsl:text>\&amp;quot;</xsl:text>
                               <xsl:call-template name="captureDoubleQuot">
                                       <xsl:with-param name="processText" select="substring-after($processText,'&quot;')"/>

                               </xsl:call-template>
                       </xsl:when>
                       <xsl:otherwise>
                               <xsl:value-of select="$processText"/>
                       </xsl:otherwise>
               </xsl:choose>

       </xsl:template>