Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过XSLT和ANT在入站XML文件中保留_Xslt_Ant - Fatal编程技术网

如何通过XSLT和ANT在入站XML文件中保留

如何通过XSLT和ANT在入站XML文件中保留,xslt,ant,Xslt,Ant,这个问题今天快把我逼疯了 注意,我添加了空格,以阻止下面的字符被编码 在输入XML文件中,我有html文本,如“li class=”classname“> 输入文件的编码符合我们的需要 问题是我正在通过XSLT运行它,以将XML转换为CSV。对于<;>;,一切正常,但XSLT将“as.”输出。因此,我最终求助于下面的XSLT段,尝试将嵌入的引号替换回“as.” 我不知道如何让xslt将引号替换为“所以,因为我已经在使用ant进行xslt处理,所以我认为在xslt任务之后使用ant替换

这个问题今天快把我逼疯了

注意,我添加了空格,以阻止下面的字符被编码

在输入XML文件中,我有html文本,如“li class=”classname“>

输入文件的编码符合我们的需要

问题是我正在通过XSLT运行它,以将XML转换为CSV。对于<;>;,一切正常,但XSLT将“as.”输出。因此,我最终求助于下面的XSLT段,尝试将嵌入的引号替换回“as.”

我不知道如何让xslt将引号替换为“所以,因为我已经在使用ant进行xslt处理,所以我认为在xslt任务之后使用ant替换将“\”替换为“会更容易

现在我快发疯了,因为ANT也在扩展“并将\替换为”

因此,问题的各个部分如下: 1.是否有办法在xslt转换过程中保留“最佳” 2.如果没有,是否有办法将xslt中的字符串替换为“? 3.如果两者都不起作用,那么让ANT“输出”而不是转义实体的语法是什么

蚂蚁

XSLT


啊,没关系,我想出了蚂蚁的语法:

它是: &";

使用不支持XML的进程替换似乎很疯狂—它将替换所有属性分隔引号以及文本内容中出现的引号


当我看到这类问题时,我的直接反应是挑战需求。你为什么要这样做?为什么你需要转义引号,而XML解析器不需要转义引号?你阅读XML时使用的是不是真正的XML解析器,如果是,为什么?如果你不想正确使用XML,明智吗要使用它吗?

我们使用的是我们正在实现的产品附带的XML加载器。我最近将界面切换为CSV,以便与批处理的其余部分更加一致。但是源系统团队在几周内无法生成CSV,因此我临时编写了一个XSLT,将XML转换为CSV,直到Source可以生成CSV。编码在文件中,因为我们将HTML作为某些文本字段的一部分导入,但它是数据库内容的一部分。编码HTML比摆弄转义引号等更容易。此外,XSLT仅将特定字段的引号转换为\,然后ANT将\替换为“引用”,因此这种方法没有全局替换的风险。我更希望xslt直接写出“…”。。。。
<replace file="${dataload.dataDir}/inbound/products/wc_store_locator.csv" token='\"' value="&quot;" />
<xsl:call-template name="replace-quotes">
          <xsl:with-param name="text" select="notificationMessage"/>
          <xsl:with-param name="replace" select="'&quot;'" />
          <xsl:with-param name="with" select="'\&quot;'"/>
      </xsl:call-template>
      <xsl:text>&quot;</xsl:text>

      <xsl:text>&#10;</xsl:text>

    </xsl:for-each>
  </xsl:template>

  <xsl:template name="replace-quotes">
        <xsl:param name="text"/>
        <xsl:param name="replace"/>
        <xsl:param name="with"/>
        <xsl:choose>
            <xsl:when test="contains($text,$replace)">
                <xsl:value-of select="substring-before($text,$replace)"/>
                <xsl:value-of select="$with"/>
                <xsl:call-template name="replace-quotes">
                    <xsl:with-param name="text"
                        select="substring-after($text,$replace)"/>
                    <xsl:with-param name="replace" select="$replace"/>
                    <xsl:with-param name="with" select="$with"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$text"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>