2008-10-02 9 views
17

뉴스 기사가 들어있는 XML 문서가 있고 뉴스 기사의 본문 요소에는 일반 텍스트 사이에 p 태그가 들어 있습니다. XSL을 사용하여 본문을 검색하면 (예 :마크 업 태그는 어떻게 보존합니까?

<xsl:value-of select="body" /> 

p 태그가 제거되는 것처럼 보입니다. 저는 Visual Studio 2005의 XSL 구현을 사용하고 있습니다.

아무도 아이디어를 피하는 방법이 있습니까? 감사.

답변

24

시도 대신

<xsl:copy-of select="body"/> 

를 사용합니다. w3schools' documentation on same에서 :

<xsl:copy-of> 요소는 현재 노드의 복사본을 생성한다.

참고 : 네임 스페이스 노드, 하위 노드, 및 현재 노드의 특성은 자동으로 입니다.

+0

고마워 블레어 총리는이 치료법을 사용해 왔습니다. – gilles27

+0

생명의 은인. 고맙습니다. – SearchForKnowledge

1

입력 문서를 제어 할 수 있다면 CDATA이 가장 적합합니다.

+0

감사하지만 문서의 형식을 변경할 수 없습니다. – gilles27

+0

CDATA를 사용하여 중첩 HTML을 래핑하는 경우 리터럴 HTML이 표시되며 줄 바꿈 (예 : 단락 태그)을 유지하려고합니다. – PeterX

-1

엔진이 <p> 태그 (출력용은 제외)를 해석하고 있기 때문입니다. "disable-output-escaping = yes | no"속성을 사용하여 "그대로"컨텐츠를 지정해야합니다.

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

나는 이것을 시도했지만 어떤 차이도 만들지 않았다. – gilles27

+0

false로 시도하십시오 ... 나는 항상 올바른 사용을 기억하지 못합니다 –

+0

다른 오류 ... 예 또는 아니오 –

4

당신이 입력 문서를 제어 할 수 있습니다 복사의 작업을해야하지 않는 경우 :

는 "XSL

http://www.xml.com/pub/a/2000/06/07/transforming/index.html에서 : 복사의 요소, 다른 한편으로는, 복사 할 수 있습니다 템플릿이 선택하는 각 노드의 전체 하위 트리 xsl : copy-of 요소의 select 속성에 적절한 값이있는 경우 특성을 포함합니다. 다음 예제에서 템플릿은 title 요소 노드와 모든 자손 노드를 복사합니다. 즉, 태그, 하위 요소 및 속성을 포함한 전체 제목 요소 : "

<xsl:template match="title"> 
    <xsl:copy-of select="*"/> 
</xsl:template> 
+0

고마워요, 이것이 효과가 있습니다. 블레어 콘래드의 제안을 처음 보았습니다.하지만 두 분 모두 똑같은 말을했습니다. – gilles27

1

XML 요소의 값은 XSLT뿐 아니라 DOM 구현에서도 마찬가지이며 모든 하위 노드 텍스트 노드의 연결입니다. XSLT에서 value-of은 요소의 값을 내보내는 반면 copy-of은 요소의 복사본을 내 보냅니다.