web-dev-qa-db-ja.com

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で許可されているかどうかを知りたいです。

85
CodeAndCats

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

<&、および区切り文字('または")以外はすべて言うようです。したがって、改行も必要です。

96
derobert

ただし、W3Cの推奨に従って、XMLパーサーはすべての空白文字をスペース(0x20)に正規化する必要があります。したがって、例の出力は異なります(「#13;#10;」の出力に新しい行が必要です) 、ただし最初の場合はスペースのみ)。

http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize

48
Jan Cetkovsky

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

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

<>&'"

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

3
Łukasz Wiatrak

はい、最初の例は有効な例です。

2
Reji