2

&や などの特殊文字を含む xml がありwhitespacesます。
これらの特殊文字を xsl で処理したいと考えています。
xslで特殊文字を処理するにはどうすればよいですか?

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cpdhtml.xsl"?>
<pmd-cpd>
    <duplication lines="72" tokens="75">
        <file line="632" path="M:\PBA0039 & Code\Common\ssc\src\Main.c"/>
        <file line="1802" path="M:\PBA0039 & Code\Common\ssc\src\link1.c"/>
    </duplication>
</pmd-cpd>

&で見ることができますpath。xml の変換中にエラーが発生します。
この問題を解決するのを手伝ってください。

4

3 に答える 3

0

他のXMLドキュメントと同様に、それらをエスケープする必要があります。

の脱出は&です&amp;

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cpdhtml.xsl"?>
<pmd-cpd>
    <duplication lines="72" tokens="75">
        <file line="632" path="M:\PBA0039 &amp; Code\Common\ssc\src\Main.c"/>
        <file line="1802" path="M:\PBA0039 &amp; Code\Common\ssc\src\link1.c"/>
    </duplication>
</pmd-cpd>
于 2012-11-27T10:51:44.777 に答える
0

有効でない場合、XSLTを使用してXMLファイルを変換することはできません。xmlで文字を省略し続けるために、XMLでCDATAセクションを使用できます。次に、XSLTを安全に使用してそれらのCDATAを選択できます。CDATAを使用して文字をエスケープし続ける方法については、次の投稿を確認してください。

http://vvratha.blogspot.com/2012/11/extracting-cdata-section-using-xslt.html

于 2012-11-27T18:13:05.867 に答える
0

これらの XML ファイルは文字列の連結によって生成されたと思います。そうでなければ、コード化されていない XML になることはありません。

特殊文字を取り除く唯一の方法は、C#、VB.NET などのプログラミング言語を使用し、ファイルを文字列としてロードすることです。
文字列操作操作を使用します。

string.Replace("&","&amp;");

Flynn1179 のコメントごとに更新:

XML で既にいくつかの文字がエンコードされているという問題が発生することを恐れている場合は、さらに 1 行追加します。

string.Replace("&amp;amp;","&amp;");

より良い解決策は、そのような XML ファイルを生成しているコードを変更することです..

例: String-concat の代わりに XML DOM を使用する

于 2012-11-27T11:51:45.757 に答える