2017-10-06 11 views
0

XSLTを使用してXML(レガシーシステムから)を変換する要件を処理しています。私は、ドル記号を持つタグを扱う際に問題に遭遇しました(それがレガシーシステムに格納されて生成される方法です)。サンプルXMLファイルの例:XML/XSLTでドル記号をエスケープする

<root> 
    <example> 
     <problem$tag>12354</problem$tag>     
    </example> 
    <thisTagIsOK>sunny day</thisTagIsOK> 
</root> 

これは私のXSLTです:

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="example"> 
    <xsl:apply-templates select="problem$tag>"/> 
     print stuff 
</xsl:template> 
</xsl:stylesheet> 

私は運なし\とし、$ 両方でドルを脱出しようとしました。

誰かがこれを手伝ってくれますか? ありがとう

+0

(許可される)_$記号を置き換えるたとえば、それを準拠させるために前処理に何かを通して、あなたのXMLをXMLを実行し、XML-DTDがautorizedです。 xslt処理の前にchar '$'を削除できますか? – GGO

+0

これはまだ開発中のプロセスなので、まだチャンスがあります。私はまだ解決策を探しています。タグで$を使用することが違法であるという明確な定義が見つかった場合、それが私の解決です。ありがとう! – noitib

+0

彼のポイント2でスティーブのように、私はxsltの前処理のcharを削除することを提案しました。世代ではない。 – GGO

答えて

1

残念なことに、XML仕様では、要素名内に$シンボル(他の多くのシンボル)を使用することを禁止しているため、XSLTと同じように解析することはできません。 XML specificationから: 彼らはXML名が外部 を使用している文脈で区切り文字としてより有用であるため、

ASCII記号や句読点、Unicodeの記号文字のかなり大きな グループと一緒に、名前から除外されていますXML文書

私はあなたのオプションはどちらかにあると言うだろう:

  1. 可能な場合は、COMを生成するために、ソースシステムを変更します。しなやかなXML
  2. が、私は$わからない
+0

ありがとうございます。それが違法なら、このシナリオでは十分です。 – noitib

関連する問題