2012-07-10 4 views
0

공백 요소를 보존하기 전에 줄 바꿈에 대해 편집 한 이전 질문입니다.XSLT : 공백 요소를 보존하기 전에 줄 바꿈을 추가하십시오.

이처럼 내 XML을 가정은

<content> 
<titleGroup> 
<title>text</title> 
</titleGroup> 
<creators1> 
<creator> 
<personName> 
    <Name>john</Name> 
</personName> 
</creator> 
</creators1> 
<creators2> 
<affiliation> 
<orgDiv> text </orgDiv> 
<address> 
<country>UK</country> 
</address> 
</affiliation> 
</creators2> 
</content> 

나는 다음과 같은 XSL 사용 :이 XML에 의해 생산

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
<xsl:output method="xml" indent="yes"/> 
<xsl:strip-space elements="*"/> 
<xsl:preserve-space elements ="creators1 creators2"/> 

<xsl:template match ="/"> 
<xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
</xsl:copy>  
</xsl:template> 
</xsl:stylesheet> 

출력,

<content><titleGroup><title>text</title></titleGroup><creators1> 
<creator><personName><Name>john</Name></personName></creator></creators1><creators2> 
<affiliation><orgDiv>text</orgDiv><address><country>UK</country></address></affiliation></creators2></content> 

을하지만 난 전에 줄 바꿈이 필요 그 요소 다음에 있지 않은 보존 공간의 요소 목록에있는 요소 (태그는 한 줄로 시작하고 끝나야합니다.)

<content><titleGroup><title>text</title></titleGroup> 
<creators1><creator><personName><Name>john</Name></personName></creator></creators1> 
<creators2><affiliation><orgDiv>text</orgDiv><address><country>UK</country></address></affiliation></creators2></content> 

, 이런 식으로 내가 titlegroup의 끝에 줄 바꿈을주고 또한 creators1의 끝에서해야합니다.

pls는 사용법과 같은 대답을 제안하지 않습니다. <xsl:text></xsl:text> 보존 공간이나 다른 방법을 사용하여이 작업을 수행해야합니다.

감사합니다.

답변

1

분명히 처리 방법에 많이 달려 있지만 MSXSL 3 (네임 스페이스에서 사용한다고 가정), 출력 모드 제거, 보존 공간 제거 및 텍스트 공간 넣기

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
     <xsl:strip-space elements="*"/> 

     <xsl:template match ="@* | node()"> 
      <xsl:copy> 
       <xsl:apply-templates select="@* | node()"/> 
      </xsl:copy>  
     </xsl:template> 

     <xsl:template match="creators1 | creators2"> 
      <xsl:text> 
      </xsl:text> 
      <xsl:copy> 
       <xsl:apply-templates select="@* | node()"/> 
      </xsl:copy> 
     </xsl:template> 
    </xsl:stylesheet> 

당신을 제공합니다

<?xml version="1.0" encoding="UTF-16"?><content><titleGroup><title>text</title></titleGroup> 
    <creators1><creator><personName><Name>john</Name></personName></creator></creators1> 
    <creators2><affiliation><orgDiv> text </orgDiv><address><country>UK</country></address></affiliation></creators2></content> 

와의 Xalan과 색슨

에서 비슷한
관련 문제