2010-05-18 3 views
10

저는 XSL을 사용하는 것에 완전히 익숙합니다. 포함시키지 않으려는 정보가 있다면 알려주세요.HTML 엔터티가있는 XSLT 문자열 - 어떻게 HTML로 렌더링 할 수 있습니까?

나는 다음과 같이 표시 할 수 있습니다 내 XSLT 파일의 문자열이 있습니다

<xsl:value-of select="@Description/> 

을 그리고 같은 브라우저에서 렌더링 나타 : 나는 얻기 위해 무엇을 할 수

<div>I can't do anything about the html entities existing in the text.</div> <div>This includes quotes, like &quot;Hello World&quot; and sometimes whitespaces.&nbsp;</div> 

이 문자열은 html로 렌더링되므로 은 나를 ", 그리고 &nbsp;은 공백을 제공합니까?

나는 이미 작동하지 않은 것들에 대해 자세히 설명 할 수는 있지만 관련이 있는지는 알 수 없습니다.

+0

좋은 질문 (+1). XSLT 2.0에서 XSLT의 정신으로이 작업을 수행하는 방법과 DOE (Disable Output Escaping) 사용을 권장하지 않는 이유를 설명하면서 필자의 대답을 참조하십시오. –

답변

15

난 당신이 그래서 다음과 같은 속성을 설정할 생각 :

<xsl:value-of select="@Description" disable-output-escaping="yes"/> 
+0

아하, 고마워! 나는'string-replace' 템플릿을 찾아서 모든 html 엔티티에 대해 한번씩 반복적으로 호출하는 것과 같은 일을하고있었습니다. – Kache

+0

이'disable-output-escaping'은 저에게 맞지 않습니다. See [내 질문] (http://stackoverflow.com/q/25508777/356815) – basZero

3

왜 실체 출력이 필요합니까? &nbsp; 브라우저는 &#xA0;과 같습니다. 두 경우 모두 줄 바꿈하지 않는 공백이 표시됩니다.

XSLT 2.0에 실제로 필요한 경우이 기능을 제공하는 character-maps이라는 기능이 있습니다. 절대적으로 필요한 경우가 아니면 DOE를 사용하지 않는 것이 XSLT 모범 사례입니다.

또한 DOE는 XSLT의 필수 기능이 아니며 일부 XSLT 프로세서는이를 구현할 수 없습니다. 즉, DOE를 사용하는 XSLT 응용 프로그램은 일반적으로 다른 XSLT 프로세서에서 이식 할 수 없습니다.

+0

문자지도가 전체 문서에 적용 되나요? 페이지의 예제는 어떤 종류의 요소를 감싸지 않았다는 것을 보여주었습니다. 또한, 내 경우에는 내가 얻는 문자열이 html 엔티티와 함께 ​​제공됩니다. 문자지도는 계속 사용할 수 있습니까? – Kache

+0

@ Kache4 : 엔티티는 XML (xhtml) 문서에만 있습니다. 파서는 항상 이것을 ' '으로 바꾸고 이것은 XSLT 프로세서가 보는 것입니다.문자표는 XML 문서에 대해 아무것도 모릅니다. 최종 출력 (serialize)이 완료 될 때 사용됩니다. 그들은 단순히 ' '의 모든 출현을'  '(이 캐릭터 맵에 지정된 모든 것)으로 바꿀 수 있습니다. 문자표는 전체 출력을 직렬화하는 데 사용됩니다. –

0

HTML에서 divs가 endline을 얻는 이유는 CSS boxmodel과 완전히 다르며 관련이 있습니다. 대부분의 브라우저는 스타일을 적용합니다 :

div {display:block;} 

표준 디스플레이 대신 : 인라인; 그러나 XHTML 네임 스페이스의 div에만 적용됩니다. XHTML 네임 스페이스에 div를 출력해야합니다.

<xsl:stylesheet xmnls:xhtml="http://www.w3.org/1999/xhtml" ... > 

을 그리고 출력 <xhtml:div> ... </xhtml:div> 대부분의 브라우저로 된 div는 XHTML 네임 스페이스 (http://www.w3.org/1999/xhtml)에있을 사업부를 인식 할 것이다 및 블록을 적용과 같이 문서의 상단에있는 접두사 XHTML에 XHTML 네임 스페이스 바인딩 스타일.

관련 문제