2016-10-12 5 views
0

同じブロック内のHTMLにコンテンツを出力するには、/ Document/Head/Signatureノードを対応する/ Document/Imageノードとdocidフィールドを使って結合するにはどうすればよいですか?XSLでXMLノードを結合する

<?xml version="1.0"?> 
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Head> 
     <Account>Fred123</Account> 
     <accountName>Fred Blogs Ltd</accountName> 
     <Signature> 
      <sigName>Fred Bloggs</sigName> 
      <docid>39215896554.0</docid> 
     </Signature> 
    </Head> 
    <Image> 
     <docid>39215896554.0</docid> 
     <docTitle>Fred Bloggs Signature</docTitle> 
    </Image> 
    <Image> 
     <docid>121212121212.0</docid> 
     <docTitle>Jo Smith Signature</docTitle> 
    </Image> 
</Document> 

出力例:

<div id="sig"> 
    Signature Name: Fred Bloggs<br /> 
    Signature Title: Fred Bloggs Signature 
</div> 

、これは一つの試みだった........私はxsl:for-eachを使用して、いくつかの方法を試してみたが、私はかなり右ではない何かを持っています

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
     <head> 
     </head> 
     <body> 
      <h1>Page</h1> 
      <xsl:for-each select="/Document/Head/Signature[docid = /Document/Image/docid]"> 
       <h4><xsl:value-of select="sigName"/></h4> 
       <h4><xsl:value-of select="docTitle"/></h4> 
      </xsl:for-each> 
     </body> 
    </html> 
</xsl:template> 

答えて

2

あなたがNE参照される要素からのデータを出力するように、明らかに、その後、右の条件を持っています再びそれを参照するED:

<xsl:template match="/"> 
    <html> 
     <head> 
     </head> 
     <body> 
      <h1>Page</h1> 
      <xsl:for-each select="/Document/Head/Signature[docid = /Document/Image/docid]"> 
       <h4><xsl:value-of select="sigName"/></h4> 
       <h4><xsl:value-of select="/Document/Image[docid = current()/docid]/docTitle"/></h4> 
      </xsl:for-each> 
     </body> 
    </html> 
</xsl:template> 

私はキー

<xsl:key name="image-ref" match="Image" use="docid"/> 
<xsl:template match="/"> 
    <html> 
     <head> 
     </head> 
     <body> 
      <h1>Page</h1> 
      <xsl:for-each select="/Document/Head/Signature[key('image-ref', docid)]"> 
       <h4><xsl:value-of select="sigName"/></h4> 
       <h4><xsl:value-of select="key('image-ref', docid)/docTitle"/></h4> 
      </xsl:for-each> 
     </body> 
    </html> 
</xsl:template> 
を使用します
関連する問題