2017-10-10 11 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 ANCHOR
証人:REPを。バニー・フランク、Dマース。

所望の出力:

証人:

ニール・キャビュート、FBN ANCHOR

REP。バニー・フランク、Dマース。

答えて

0

特定の<のbase:p要素に一致する1つのテンプレートを提示しました。これは、それがマッチする各要素ごとに個別にインスタンス化され、各インスタンシエーションは結果ツリーに "WITNESSES"という値を持つテキストノードを作成し、その後要素の子要素の変換が行われます。あなたは1つの見出しの下のグループに証人をしたい場合は、その後、あなたはそれらの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

はそれは素晴らしい仕事を!ありがとう。 私の希望する出力は: 証言: NEIL CAVUTO、FBN ANCHOR REP。バニー・フランク、Dマース。 私が得ているものは次のとおりです。 証拠:ネイル・カブト、FBNアンカー・レパートリーバニー・フランク、Dマース。 –

+0

@ JohnDev、あなたの望む出力と観測された出力との間に差異はありません。いずれにしても、XSLTを超えてさまざまなメディアに結果がどのように表示されるかが影響します。あなたがプレゼンテーション媒体やプロセスを開示していないので、私ができることは原理を説明することだけです。あなたは、あなたの変換から必要なもの*** XML ***出力を把握し、私はそれを生成するためにあなたを与えた情報を適用する必要があります。 –

関連する問題