[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: xsl array alternatives (novice)
Isaac,
At 03:41 PM 9/18/2002, Stuart wrote: > Exhibit A. --before > (many other irrelevent records)... > <nodeA att1="True" att2="N" att3="1234"/> > <nodeA att1="True" att2="N" att3="321"/> > <nodeA att1="True" att2="N" att3="456"/> > <nodeA att1="True" att2="Y" att3="9876"/> > <nodeB att1="True" att5="Y" att3="45"/> > <nodeB att1="True" att5="N" att3="65"/> > <nodeC att1="True" att7="Y" att3="784"/> > <nodeC att1="True" att7="Y" att3="412"/> > <nodeC att1="True" att7="N" att3="635"/> > ...(many other irrelevent records) > > I would like to create xml output that looks something like this: > > Exhibit B. --after > (many irrelevent records)... > <nodeA att1="True" att2="N" att3="1234"/> > <nodeA att1="True" att2="N" att3="321"/> > <nodeA att1="True" att2="N" att3="456"/> > <nodeB att1="True" att5="N" att3="65"/> > <nodeC att1="True" att7="N" att3="635"/> > ...(many irrelevent records that may or may not have duplicate attribute > names and values) > <nodeA att1="True" att2="Y" att3="9876"/> > <nodeB att1="True" att5="Y" att3="45"/> > <nodeC att1="True" att7="Y" att3="784"/> > <nodeC att1="True" att7="Y" att3="412"/> > <end of document/> This works fine, and in many cases may be the best way to approach it. A simpler solution is just to filter the elements out with select attributes on apply-templates (or copy-of). This avoids the overhead of the key (as if that were frequently a problem: it's not): <xsl:template match="parent-of-nodes"> <xsl:copy-of select="*[@* = 'N']"/> <xsl:copy-of select="*[@* = 'Y']"/> </xsl:template> Like Stuart's solution, this assumes that any attribute marked as 'N' pulls the node into the N category, any attribute marked 'Y' pulls it into the Y category. It depends on the rule for equality of node sets with strings (they are equal if the node set -- here, the set of all an element's attributes -- contains any node equal to the string.) The logic can easily be tightened, of course. This is a pretty basic application of XSLT; as you can see no procedural thinking (such as where you're going to "put" these nodes, as in an array) is necessary at all. Cheers, Wendell
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|