2014-04-22 3 views
0

이 내 XML 파일입니다 : 내가 XSL (1.0)이 작업을 수행 어떻게XSL to XML - 어떻게해야합니까?

<blurb> 
    <p> 
    Example text example text example text, woo! 
    </p> 
    <p> 
    More example text. Amazing! 
    </p> 
</blurb> 

:

<HarperCollins> 
    <BookComingSoon> 
     <BookDescription> 
     After a family tragedy... 
      <NewParagraph/> 
     Holden Cameron was addicted... 
      <NewParagraph/> 
     When equipment, treasure... 
     </BookDescription> 
    <BookComingSoon> 
</HarperCollins> 

내가 XML로 변경해야이합니다 (BookDescription 부분)처럼 보이게하기 위해?

내가 지금까지 무엇을 가지고 있습니다 :

<blurb> 
    <xsl:for-each select="BookDescription"> 
     <p><xsl:value-of select="."/></p> 
    </xsl:for-each> 
</blurb> 

편집

이 전체의 XML 문서입니다 :

<?xml version="1.0"?> 
<HarperCollins> 
    <BookComingSoon> 
     <Book>Night Diver</Book> 
     <By>Elizabeth Lowell</By> 
     <Pages>368</Pages> 
     <CoverImage>nd-el.jpg</CoverImage> 
     <OnSale>4/8/2014</OnSale> 
     <ForFansOf>Romance</ForFansOf> 
     <ForFansOf>Suspense</ForFansOf> 
     <BookDescription> 
     After a family tragedy... 
      <NewParagraph/> 
     Holden Cameron... 
      <NewParagraph/> 
     When equipment, treasure... 
     </BookDescription> 
    </BookComingSoon> 
    <BookComingSoon> 
     <Book>Under a Silent Moon</Book> 
     <By>Elizabeth Haynes</By> 
     <Pages>352</Pages> 
     <CoverImage>uasm-eh.jpg</CoverImage> 
     <OnSale>4/15/2014</OnSale> 
     <ForFansOf>Suspense</ForFansOf> 
     <ForFansOf>Thriller</ForFansOf> 
     <BookDescription> 
     In the crisp, ... 
      <NewParagraph /> 
     As DCI Louisa Smith ... 
     </BookDescription> 
    </BookComingSoon> 
</HarperCollins> 

의 I 사용하는 각가-둘 다 할 것입니다 노드. 첫 번째 책 설명의 처리가 시작된다

<xsl:template match="BookComingSoon"> 
     <blurb><xsl:apply-templates match="BookDescription" /></blurb> 
    </xsl:template> 

    <xsl:template match="BookDescription/text()"> 
     <p><xsl:value-of select="."/></p> 
    </xsl:template> 

    <xsl:template match="NewParagraph" /> 

: 각각의 경우-이 시도 완전히 남용 :-)이

+1

어떤 코드를 시도 했습니까? 처음 시작하는 곳이 될 것 같습니다. –

+0

\t 이 \t

\t JBin

+2

당신은 정말 추가해야 귀하의 XSLT 전체 예제. 우리는 컨텍스트가'xsl : for-each'에 대해 무엇인지 모릅니다. 현재 출력물을 추가했는지는 추측 할 수 있지만 전체 XSLT가 더 좋을 수 있습니다. 실제로'xsl : for-each' (컨텍스트가'BookComingSoon' 인)에서 결과를 얻고 자한다면 select ('select = "BookDescription/text()"'의 끝에'text() . –

답변

2

더 간단 할 수 있습니다. 첫 번째 장소에서 NewParagraph 요소를 절대 일치시키지 않아 빈 템플릿을 피할 수 있습니다.

<xsl:template match="/"> 
    <blurb><xsl:apply-templates match="//BookDescription/text()" /></blurb> 
</xsl:template> 

<xsl:template match="BookDescription/text()"> 
    <p><xsl:value-of select="."/></p> 
</xsl:template> 
+0

감사합니다! 이 코드는 완벽합니다! – JBin

0

. 두 번째는 모든 텍스트를 꺼내어 <p>으로 둘러싸고 마지막으로 불필요한 요소를 표시하지 않습니다.