[xml] XML 속성 값에서 줄 바꿈이 허용됩니까?

우아하거나 바람직하지 않지만 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에서 허용되는지 알고 싶습니다.



답변

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

제외한 모든 말을 것 같은데 <, &하고 구분 기호 ( '")는 OK입니다. 그래서 개행도 있어야합니다.


답변

허용되지만 W3C 권장 사항에 따라 XML 파서는 모든 공백 문자를 공백 (0x20)으로 정규화해야합니다. 따라서 예제의 출력이 달라집니다 ( “& # 13; & # 10에 대한 출력에 새 줄이 있어야합니다. ; “, 그러나 첫 번째 경우에는 공백 만).

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


답변

.NET 전용 : 대상 문자열이 유효한 xml 속성인지 확실하지 않은 경우 (코드를 통해이 속성의 값을 제공) 항상 SecurityElement.Escape 함수를 사용 하여 잘못된 문자를 이스케이프 할 수 있습니다 .

이 함수의 설명에 따르면 유효하지 않은 문자는 다음과 같습니다.

<, >, &, ',"

그리고 이것은 (내 전임자들이 썼 듯이), 그 새 줄은 괜찮아 야 함을 의미합니다.


답변

네, 첫 번째 예는 유효한 것입니다.


답변