2017-10-10 92 views
0

原始XML:如何在元素名稱下顯示特定元素的所有值?

<section sectiontype="WITNESSES"> 
        <bodytext> 
         <p> 
          <text> 
           <person:person> 
            <person:name.text>NEIL CAVUTO, FBN ANCHOR</person:name.text> 
           </person:person> 
          </text> 
         </p> 
         <p> 
          <text> 
           <person:person> 
            <person:name.text>REP. BARNEY FRANK, D-MASS.</person:name.text> 
           </person:person> 
          </text> 
         </p> 
        </bodytext> 
       </section> 

XSL模板,我有:

<xsl:template match="base:section[@sectiontype='WITNESSES']/base:bodytext/base:p"> 
    <xsl:element name="nl"/> 
    <xsl:element name="{name()}">   
     <xsl:copy-of select="@*"/> 
     <xsl:attribute name="display">block</xsl:attribute>    
     <xsl:element name="hdr"> 
      <xsl:attribute name="typestyle">BF</xsl:attribute> 
      <xsl:attribute name="inline">Y</xsl:attribute> 
      <xsl:text>WITNESSES:</xsl:text> 
      <xsl:apply-templates/> 
     </xsl:element>      
    </xsl:element> 
</xsl:template> 

電流輸出我得到:

目擊者:尼爾·卡維託,FBN錨
目擊者:REP。 BARNEY FRANK,D-MASS。

所需的輸出:

證人:

尼爾·卡維託,FBN ANCHOR

REP。 BARNEY FRANK,D-MASS。

回答

0

您提交了一個模板,它與某些< base:p>元素相匹配。它爲每個與其匹配的元素分別實例化,每個實例化在結果樹中創建一個值爲「WITNESSES」的文本節點,然後對元素的子元素進行轉換。如果你想在一個標題下將證人分組,那麼你需要通過這些base:p元素的共同祖先元素的變換來輸出標題。

例如,

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:base="http://my.com/base" 
    xmlns:person="http://my.com/person"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates select=".//base:section"/> 
    </xsl:template> 

    <xsl:template match="base:section[@sectiontype='WITNESSES']"> 
    <xsl:text>WITNESSES:</xsl:text> 
    <xsl:apply-templates select=".//person:name.text"/> 
    </xsl:template> 

    <xsl:template match="person:name.text"> 
    <xsl:text>&#x10;</xsl:text> 
    <xsl:value-of select="."/> 
    </xsl:template> 

</xsl:stylesheet> 
+0

它的工作太棒了!謝謝。 但我希望的輸出是: WITNESSES: NEIL CAVUTO,FBN ANCHOR REP。 BARNEY FRANK,D-MASS。 而我得到的是: WITNESSES:NEIL CAVUTO,FBN ANCHOR REP。 BARNEY FRANK,D-MASS。 –

+0

@JohhnDev,你想要的和觀察到的輸出之間沒有任何區別。無論如何,XSLT之外的因素會影響您的結果在各種媒體中的呈現方式。既然你沒有公開演示媒體或過程,我只能解釋原則。你必須弄清楚你需要從你的轉換中得到什麼*** XML ***輸出,並應用我提供的信息來生成這些信息。 –

相關問題