1

xmlのxslを作成していますが、xmlでスタックし&ています。のようなエラーが表示されますA semi colon character was expected. Error processing resource..

今、私はすべて&をに置き換えたいです&。エラーが表示されないようにします。

どうすればこれを達成できますか?

この問題を解決する別の方法はありますか?

4

2 に答える 2

1

XSL では不可能 - 整形式の XML 入力のみで動作します。

sed などの検索と置換機能を使用する必要があります。

sed -i 's:&:&:' yourfile.xml 

またはさらに良い:

sed -i 's:&:&:g;s:amp;amp;:amp;:g;' yourfile.xml

これにより、正しいエンティティ参照を置き換えることができなくなります。

于 2012-11-27T09:29:23.587 に答える
1

ここに答えがあります。$input パラメーターを入力ファイルに置き換えます。入力としての入力ファイルではなく、有効な XML ファイルに対して実行します。スクリプトはそれを無視します。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
  exclude-result-prefixes="xs xd"
  version="2.0">

  <xsl:param name="input" select="'file:/U:/input.txt'"/>

  <xsl:template match="/">
    <result>
    <xsl:analyze-string select="unparsed-text($input)" regex="&amp;">
      <xsl:matching-substring><xsl:text>&amp;</xsl:text></xsl:matching-substring>
      <xsl:non-matching-substring><xsl:copy-of select="."></xsl:copy-of></xsl:non-matching-substring>
    </xsl:analyze-string>
    </result>
  </xsl:template>

</xsl:stylesheet>

PS - これは、根本的な問題に対する提案された解決策ではなく、概念実証として残しています。XSLT は、この仕事に最適なツールではありません (ハンマーしかないからといって、すべてを釘のように扱えというわけではありません)。

于 2012-11-27T09:34:17.093 に答える