2013-11-14 18 views
13

XML을 XML로 변환하기 위해 XLST 파일을 사용하고 있습니다.XML로 깨지지 않는 공간

유효한 공백은 무엇입니까?

<xsl:text> </xsl:text> 
<xsl:text>&nbsp;</xsl:text> 
<xsl:text>&#160;</xsl:text> 
+2

첫번째 공간은 보통 공간이고, ' '은 유효한 인코딩이 아니며, 후자는'  '의 유효한 인코딩입니다. – freefaller

답변

12

XML은 &lt;, &gt;, &quot;, &apos;&amp; 외에 이름이 지정된 엔티티가 없습니다.

다른 문자

은 (예를 들어, <?xml version="1.0" encoding="..." ?>) XML 선언에 올바른 인코딩을 선언 한 점을 감안 그대로 표현 될 수있다. UTF-8 선언은 선택 사항입니다. 어쨌든 기본값이기 때문입니다. 즉

: 특별히 어떤 문자를 이스케이프 할 필요가 없습니다 어디서나 는 XML 문법 규칙을 깰 것 이스케이프 떠나하지 않는 한 (같은 < 또는 & 것).

물론 원하는 모든 문자를 이스케이프 처리 할 수 ​​있습니다.

이 표현은 지금까지 결과 문서에 관한 한 동일합니다

<foo>&#x54;&#x65;&#x73;&#x74;&#xa0;&#x54;&#x65;&#x73;&#x74;</foo> 

<foo>&#84;&#101;&#115;&#116;&#160;&#84;&#101;&#115;&#116;</foo> 

<foo>Test&#160;Test</foo> 

<foo>Test Test</foo><!-- given that the " " really is char code 160 --> 

주 당신 DOCTYPE을 사용하여 사용자 정의라는 이름의 실체 (같은 nbsp)를 선언합니다.

<!DOCTYPE xsl:stylesheet [ 
    <!ENTITY nbsp "&#160;"> 
]> 

그러나 XML은 거의 필요하지 않은 문자를 허용합니다. 특히 DOM API와 같은 적절한 도구를 사용하여 문서를 만들 때 특히 그렇습니다. 이 질문에 관련된

+0

마지막 두 개는 동등합니까? 공백은 비 분리 공간과 같지 않습니다 ... 적어도 이해해야합니다. – freefaller

+2

그건 SO의 정규화에 결함이 있습니다. 확실히 NBSP 캐릭터를 사용했지만 조용한 공간으로 대체되었습니다. 실제로 NBSP를 답변에 저장하는 것은 불가능한 것처럼 보입니다. – Tomalak

4

, 당신 * .XLS 스타일 시트의 DOCTYPE에 구문 분석 오류를 일으키는 모든 요소를 ​​추가합니다. 평소처럼

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE xsl:stylesheet [ 
    <!ENTITY nbsp "&#160;"> 
]> 
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

이제 &nbsp;를 사용할 수 있습니다.

관련 문제