2017-10-20 7 views
0
<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<programme> 
    <condition> if (a>b) and (c>d) echo "sorry"; </condition> 
</programme> 

結果:ドキュメントが正常に"<" , ">は"、」と 'このXMLの例で示されている

とエラーなしを確認!!しかし、私は私ができることを読ん

成功' 理由特別なcarractersをxmlで直接使用しますが、エンティティを渡す必要があります(例:> ===>&gt;など)

エラーが表示されない理由

が、私は(ちょうど2つの括弧を追加する)この例を試してみてくださいエラーが

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<programme> 
    <condition> if (a<b and b>d) </condition> 
</programme> 

エラー表示: 'b' を予期しないトークンです。期待されるトークンは '='です。私たちは、タグ<bを開くので、3行目、 位30

これは彼が考えると、問題が存在する理由ようだ閉じられていない値とタグなしの属性のようなものですか?

もしそうなら、私たちはこの間違いを犯さないと特別なキャラクターを使用することができますか?

とありがとうございます。

+0

文字をエスケープする必要があります。この質問(https://stackoverflow.com/questions/1091945/what-c​​haracters-do-i-need-to-escape-in​​-xml-documents) –

答えて

2

あなたの例では、>という文字と混同することはありません(通常、テキストノード内にあります)。タグの末尾として扱うことはできません(対応する<シンボルがないため)。それがパーサーがそれを扱う理由です。ここで

the XML FAQがそれについて言っているのです:

別に見えないASCII制御文字(あなたが 入力できないもの)から、他のすべての文字は通常のテキストです。通貨記号(€、 £、$、ƒ、₨、Ƀなど)、すべての句読点(<&除く)、および 他のすべての文字、記号、シンボル任意の言語や システムを書くことがあります単にテキスト(正しい文字が のエンコーディングであることが前提です)。


エラーについては、そのテキストをよく見る:

'b' is an unexpected token. The expected token is '='. Line 3, position 30. 

ポイントそれは、それはb最初ではない - が、第2 1。ここでは、パーサーによってどのように扱われるか<b and b>の一つの可能​​な方法です:開始タグ

  • andは、属性名
  • として扱われるよう

    • <bが扱われているが...パーザは=トークンがどこかに現れるのを待っています。通常の属性構文は%ATTR_NAME% = %ATTR_VALUE%で、空白は区切り文字として許可されています。しかし、代わりにbを手に入れて、手を空に投げるだけです。

    +0

    非常に完全な答えは、有用な追加、エンティティの過剰使用CDATAセクションを使うことができるので、文書を遅くする可能性があります。 –

    +0

    例:! <?xmlのバージョン= "1.0" エンコード= "UTF-8" スタンドアロン= "はい"> <[CDATA [(( B))は、 "C'EST盆踊り" エコー場合;]]>

    関連する問題

     関連する問題