2009-08-06 6 views
0

부 :XSL 금지 - 출력 이스케이프는 제거 공백은 XML의

내 XSL에서
<text><b>Title</b> <b>Happy</b></text> 

내가 가진 : 내 간격이 실종

**TitleHappy** 

<xsl:value-of select="text" disable-output-escaping="yes" /> 

내 출력된다 - </b><b> 사이에 공백이 있어야합니다.

normalize-space()을 시도했지만 작동하지 않습니다.

제안 사항? 감사!

+1

당신의보기가 저를 위해 작동하고 있습니다. 어떤 xml 파서와 xslt 프로세서를 사용하고 있습니까? 아마도 파서는 이미 변환이 호출되기 전에 공백을 제거하고 있습니까? –

+0

나를 위해 일한다. 귀하의 질문에 분명하고 작지만 중요한 부분이 빠져 있습니다. 내가 해제 출력 - 이스케이프를 설정할 때 – Tomalak

+0

는 = "아니오" 내 출력 난 아직도 난 당신이 더 컨텍스트를 게시 할 필요가 있다고 생각 모든 관련 정보 –

답변

1

당신은 XSL 사용에서 공백을 원하는 경우 : < XSL : 텍스트> </XSL : "A"두 공간 것이다 : 그 (텍스트 노드로 인식 즉,이 경우>

공백은 유지됩니다 텍스트) 인식 할 것을는 오리지널 소스 XML에서

공백

()는

parser.setPreserveWhitespace (TRUE), 예를 들어, 파서 말하고 보존되어야한다; 당신의 출력을 HTML로

+0

그래서 사이의 공간은 텍스트 노드로 인식되지 않기 때문에 보존되지 않았다고 생각합니까? 어쨌든 보존하고 결과물을 출력으로 표시 하시겠습니까? –

+0

나는 소스를 xsl로 오해했기 때문에 (즉, xsl : text 메서드는 작동하지 않습니다). 나는 XML 파서가 당신의 source-xml에서 공백을 제거하는 것이 두렵다. 다른 공백 문자가 아닌 문자를 추가하면 textnode로 인식되어 공백을 보존합니다 (적어도 한 번 이상). xml 파서의 옵션을 면밀히 살펴보고 공백을 유지하도록하겠다. 그렇지 않으면   (또는   - 줄 바꿈하지 않는 공간)이 도움이되는 유일한 것입니다. – Niko

0

당신은 당신이 원래 XML의 생성에 대한 제어가 있나요 비 분리 공백  

+0

감사합니다. 현재 귀하의 제안을 사용하고 있습니다. –

0

로 공간을 대체 할 수 있을까? 그렇다면 xml : space = "preserve"를 프로세서에 공백을 유지하도록 지시해야하는 텍스트 요소에 추가 할 수 있습니다.

<text xml:space="preserve"><b>Title</b> <b>Happy</b></text> 

또는 XSLT의 "xsl : preserve-space"요소를 살펴보십시오.

<xsl:preserve-space elements="text"/> 

이 개인적으로 본 적이 없지만 도움이 될 수 있습니다. 자세한 내용은 W3Schools을 참조하십시오.

+0

원본 XML을 제어 할 권한이 없습니다. = ( preserve-space를 시도했는데 작동하지 않습니다. 어쨌든 기본 설정으로 알았습니다. 굵게 태그를 사용할 때만 공백이 사라졌습니다. 제목 Happy 여전히 나에게 돌아갑니다 Title Happy 이상한. –

0

누구나 입력 해 주셔서 감사합니다. 현재 나는 공간을 테스트하고 깨지지 않는 공간으로 대체하는 MattH 제안을 사용하고 있습니다. 내가 생각한 또 다른 방법은 "</b> < b>"이고 "</b> <>"으로 대체하는 것입니다. 굵은 태그 안에 포함 된 공간은 실제로 출력됩니다. 두 가지 방법 모두 효과가있었습니다. 그 의미가 무엇인지 모르겠다. 그리고 나는 두 개의 별개의 굵은 태그 사이에서 간격이 제거 된 이유를 여전히 알 수 없습니다.