XML属性値の改行は許可されますか?


91

私はそれがエレガントでも望ましいものでもないことを理解していますが、XML要素の属性値が複数行にまたがることが(整形式XMLで)許可されていますか?

例えば

<some-xml-element value="this value goes over....
multiple lines!" />

ええ、私はそれを書くより良い方法があることに気づきました。私は個人的にそれを次のように書きます:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>

または:

<some-xml-element value="this value goes over....&#13;&#10;" />

しかし、私たちは独自のXMLパーサーを持っているので、最初の例が整形式のXMLで許可されているかどうかを知りたいのです。


1
.NET XDocumentパーサーはこれを期待どおりに受け入れますが、2番目の例のように、テキスト<値>の場合のように、属性値は改行ではなくスペースで返されます。(あなたの質問は.NETに固有ではありませんが、私のサンプルデータはです。これが一般的な標準の一部なのか、.NET機能の一部なのかはわかりません。)
Mark Hurd


改行を保持する同様の質問の例を作成しました:stackoverflow.com/a/29782321/611007
n611x007 '22

回答:


101

http://www.w3.org/TR/REC-xml/#NT-AttValue

以外のすべてを言っているようだ<&とあなたの区切り文字('または")OKです。したがって、改行も必要です。


6
属性内で新しい行が適切な場合の1つの例は、Spring構成のxsi:schemaLocation属性で、スペースで区切られた複数のURLを含めることができるため、画面の幅よりもはるかに長くなることがあります。
stivlo

3
Jan Cetkovskyが言うように、それは有効ですが、パーサーはそれらを空間に正規化します
n611x007 2015

ええと... XSLTドキュメントのif / whenテストステートメントを長くするために複数の行を使用しています。
Nullius


3

.NETのみ:ターゲット文字列が有効なxml属性であるかどうかがわからない場合(およびこの属性の値をコードで提供する場合)、いつでもSecurityElement.Escape関数を使用して無効な文字をエスケープできます。

この関数の説明によると、無効な文字は次のとおりです。

<>&'"

そして、これは(私の前任者が書いたように)新しい行で問題ないことを意味します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.