そこで、私はいくつかのXML生成コードを書いていますが、次の属性値がXMLフォーマットを台無しにしていることがわかりました。
"Jim/Bob"
そこで、エスケープシーケンスとして使用されるXMLエンティティを調べましたが、見たすべてのリストにスラッシュのリストは含まれていませんでした。ここで明らかな何かを見逃していますか?脱出したいようなもののようです...
スラッシュはそのまま有効であり、さらにエンコードする必要はありません。
予約文字は次のとおりです。
>
<
&
%
さらに多くのXMLエンティティ- http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
これは問題ではないことがわかったが、bobinceの答えに加えて、Fraction SlashHTMLエンティティ⁄
に見える スラッシュのように 。このページに実際にアクセスする人がいる場合にのみdoesスラッシュを表す何かのHTMLエンティティが必要です。
スキーマ(XSD)を使用すると、Jim、Bob、Jim/Bobという名前の要素を問題なく定義できるため、このスレッドのコメントは完全に正しいとは思わない。しかし、その後、要素とエンティティを定義する場合:
<names>
<Jim>Carrey</Jim>
<Bob>Jones</Bob>
<Jim/Bob>Six figured Hillbilly</Jim/Bob>
</names>
問題は明らかです。
参考までに、スラッシュは有効なXMLですが、下流でどのように使用されているかに注意してください。 Azureサービスバスキューへの接続に使用しました。 Azure自体は、接続文字列にスラッシュを含むキーを生成しましたが、それらを使用しようとすると、静かに壊れました。 “/”
でエスケープすると機能します
"Jim/Bob"
事前定義されたエンティティ参照はありませんが、文字参照「#47;」を使用できます。
ただし、XMLに含めるために/をエスケープする必要はありません。 URIパスパーツなど、他の何かに含めるために含める必要がある場合があります。しかし、その場合、最初にその形式でエスケープする必要があります。 URIを取得するアプリケーションには、XMLでエンコードしたかどうかを知る方法がありません。
「Jim/Bob」の値をエスケープする必要があるのか、XMLで問題が発生するのか、まったくわかりません。
XMLスキーマで定義されているように、おそらく制約された属性があります。
XMLフォーマットの意味がわかりません。