Zdaję sobie sprawę, że nie jest to eleganckie ani pożądane, ale czy dozwolone jest (w dobrze sformułowanym XML), aby wartość atrybutu w elemencie XML obejmowała wiele wierszy?
na przykład
<some-xml-element value="this value goes over....
multiple lines!" />
Tak, zdaję sobie sprawę, że są lepsze sposoby na napisanie tego. Osobiście napisałbym to tak:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
lub:
<some-xml-element value="this value goes over.... " />
Ale mamy własny parser XML i chciałbym wiedzieć, czy pierwszy przykład jest dozwolony w dobrze sformułowanym XML.
xml
xml-parsing
CodeAndCats
źródło
źródło
Odpowiedzi:
http://www.w3.org/TR/REC-xml/#NT-AttValue
Wydaje się, że mówi wszystko oprócz
<
,&
i twój separator ('
lub"
) jest OK. Więc nowa linia też powinna być.źródło
Jest to dozwolone, jednak zgodnie z zaleceniem W3C twój parser XML powinien znormalizować wszystkie białe znaki do spacji (0x20) - więc wyjście twoich przykładów będzie się różnić (powinieneś mieć nowy wiersz na wyjściu dla "& # 13; & # 10 ; ”, ale tylko spacja w pierwszym przypadku).
http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize
źródło
Tylko .NET: jeśli nie masz pewności, czy ciąg docelowy jest prawidłowym atrybutem xml (i podaj wartość tego atrybutu za pośrednictwem kodu), zawsze możesz użyć funkcji SecurityElement.Escape, aby uniknąć nieprawidłowych znaków.
Zgodnie z opisem tej funkcji jedynymi nieprawidłowymi znakami są:
<
,>
,&
,'
,"
A to oznacza (jak pisali moi poprzednicy), że nowa linia powinna być OK.
źródło
Tak, pierwszy przykład jest prawidłowy.
źródło