This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Problem with getting values from two files


Heppa,

> Is is possible by XSLT
> 
> File A.
> 
> <Name value="Johan"/>
> <Address Value="JohanCompositAddress" Type="CompositeAddress"/>

document() function can only be used to retrieve well-formed XML documents and your File A is not well-formed. If you add a wrapper element, either by changing the file or using a wrapper XML document where you include the File A using external general entity, then it will work.

> File B.
> 
> <CompositeAddress>
> <JohanCompositeAddress>
> <Address Value ="NewYork"/>
> <Address Value ="Paris"/>
> </JohanCompositeAddress>
> </CompositeAddress>
> 
> Resultant File.
> <UserName Value="Johan"/>
> <UserAddres>
> <Address Value="NewYork"/>
> <Address Value="Paris"/>
> </UserAddres>
> 
> Here I want to get the result by the Single XSL file...What 
> I'm supposing
> ..the required XSL should do is
> 1. Check the type attribute of Address node of File A.
> 2. If it is CompositeAddress..then it should take the value (ie
> JohanCompositAddress) attribute of the address node of File A 
> and check it
> ...whether it is present in File B. "JohanCompositAddress"
> 3. And if it is present in file B then fetch out all the 
> address against
> <JohanCompositeAddres> and show it in the resultant file.

If you wrap the File A into some element and fix files so that the "JohanCompositeAddress" string is the same in both files, then e.g.

  <xsl:variable name="value" select="document('File A.')//Address[@Type = 'CompositeAddress']" />
  <xsl:for-each select="document('File B.')/CompositeAddress/*[name() = $value/@Value]">
    <UserName Value="{$value/preceding-sibling::Name[1]/@value}"/>
    <UserAddres>
      <xsl:copy-of select="Address" />
    </UserAddres>
  </xsl:for-each>

The node $value is bound to and the node-set the xsl:for-each selects might not be the best possible, change them to better suit the whole structure of your source document. Also, the next time you ask a question on the list, it might be worth it posting your non-functioning XSLT stylesheet and ask how to fix it, instead of asking for a whole solution.

Cheers,

Santtu

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]