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


92

우아하거나 바람직하지 않지만 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 구문 분석기는이를 예상대로 허용하지만 속성 값은 두 번째 예제와 같이 텍스트 <value>에있는 것처럼 줄 바꿈이 아닌 공백으로 리턴됩니다. (귀하의 질문은 .NET 특정하지 않습니다,하지만 내 샘플 데이터는이 일반적인 표준 또는 .NET 기능의 일부인 경우 모르겠어요..)
마크 허드 (Mark Hurd)


: 비슷한 보존의 줄 바꿈이 질문에 예를 만든 stackoverflow.com/a/29782321/611007
n611x007

답변:


102

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

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


6
새 줄이 속성 내부에 좋은 아이디어 인 경우 한 가지 예는 Spring 구성의 xsi : schemaLocation 속성에 대한 것입니다.이 속성은 공백으로 구분 된 여러 URL을 포함 할 수 있으므로 화면 너비보다 훨씬 더 깁니다.
stivlo

3
그것은 유효하지만 Jan Cetkovsky가 말한 것처럼 파서가 그것들을 공간으로 정규화합니다 .
n611x007

글쎄 ... XSLT 문서에서 긴 if / when 테스트 문에 여러 줄을 사용합니다.
Nullius


3

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

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

<, >, &, ',"

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.