[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: sorting (again)

Subject: Re: sorting (again)
From: "Davis Ford" <davisford@xxxxxxxxx>
Date: Thu, 29 Nov 2007 12:43:38 -0500
Re:  sorting (again)
Thanks all...this list is a huge help!

Incidentally, the last two you proposed do work, Scott.  The first
does not.  I've updated the template as follows:

	<xsl:template match="@*|node()">
  		<xsl:copy>
			<xsl:copy-of select="@*"/>
			<!-- copy all attributes before applying templates to children only -->
			<xsl:apply-templates select="node()">
				<!--<xsl:sort select="- number(name() = 'DictionaryModelDescriptor')"/>-->
				<xsl:sort select="- boolean(self::DictionaryModelDescriptor)"/>
				<xsl:sort select="@typeName"/>
      				<xsl:sort select="name(.)"/>
      				<xsl:sort />
    			</xsl:apply-templates>
  		</xsl:copy>
	</xsl:template>

On Nov 29, 2007 12:36 PM, Scott Trenda <Scott.Trenda@xxxxxxxx> wrote:
> Hey Davis,
>
> The reason that your first try isn't working is because <xsl:sort
> select="DictionaryModelDescriptor"/> looks down the child:: axis for an
> element named "DictionaryModelDescriptor", when you actually want it to
> look down the self:: axis for that element. I think any of the following
> would work (you'll have to try them out):
>
> <xsl:sort select="self::DictionaryModelDescriptor"/>
> <xsl:sort select="- number(name() = 'DictionaryModelDescriptor')"/>
> <xsl:sort select="- boolean(self::DictionaryModelDescriptor)"/>
>
> The unary negop is there to avoid specifying order="descending"; I'm not
> quite sure if the last two would need data-type="number" or not. There
> may be other shortcuts that work more concisely, and these may need some
> tweaking to work just right. Be sure to let us know what worked the best
> in the end, ok?
>
> ~ Scott
>
>
>
> -----Original Message-----
> From: Davis Ford [mailto:davisford@xxxxxxxxx]
> Sent: Thursday, November 29, 2007 11:10 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  sorting (again)
>
> Hi, one more sorting question.
>
> Given the XML pasted below...I'm using the following transform to sort
> it canonically.  However, I need the "DictionaryModelDescriptor" node
> to always be the first node, and then the rest are sorted canonically.
>  I tried this, but it does not do what I want.
>
>   <xsl:template match="@*|node()">
>       <xsl:copy>
>         <xsl:apply-templates select="@*|node()">
>           <xsl:sort select="DictionaryModelDescriptor"/>
>           <xsl:sort select="@typeName"/>
>           <xsl:sort select="name(.)"/>
>           <xsl:sort />
>         </xsl:apply-templates>
>       </xsl:copy>
>   </xsl:template>
>
> This one puts it at the top, but now I have a duplicate in the middle
>
>   <xsl:template match="@*|node()">
>       <xsl:copy>
>       <xsl:apply-templates select="DictionaryModelDescriptor"/>
>       <xsl:apply-templates select="@*|node()">
>         <xsl:sort select="@typeName"/>
>         <xsl:sort select="name(.)"/>
>         <xsl:sort />
>       </xsl:apply-templates>
>       </xsl:copy>
>   </xsl:template>
> How can I "move" the DictionaryModelDescriptor node to the top after
> sorting?
>
> Thanks in advance,
> Davis
>
> XML ->
>
> <?xml version="1.0" encoding="UTF-8"?>
> <DictionaryModel>
>     <DictionaryModelDescriptor about="modelName1/modelVersion1">
>         <modelName>modelName1</modelName>
>         <modelVersion>modelVersion1</modelVersion>
>     </DictionaryModelDescriptor>
>     <DictionaryParts>
>         <DictionaryPart abstract="false" typeName="part.full1">
>             <children/>
>             <parents/>
>             <DictionaryProperties/>
>             <feature>feature.empty3</feature>
>             <maxCardinality>2</maxCardinality>
>             <minCardinality>1</minCardinality>
>             <parentComposition>feature.empty2</parentComposition>
>             <role>role</role>
>             <sequence>1</sequence>
>         </DictionaryPart>
>         <DictionaryPart abstract="false" typeName="part.full5">
>             <children/>
>             <parents/>
>             <DictionaryProperties/>
>             <feature>feature.empty13</feature>
>             <maxCardinality>2</maxCardinality>
>             <minCardinality>1</minCardinality>
>             <parentComposition>feature.empty12</parentComposition>
>             <role>role</role>
>             <sequence>1</sequence>
>         </DictionaryPart>
>     </DictionaryParts>
>     <DictionaryAssociations>
>         <DictionaryAssociation abstract="false"
> typeName="association.empty1">
>             <children/>
>             <parents/>
>             <DictionaryProperties/>
>         </DictionaryAssociation>
>         <DictionaryAssociation
> compositionType="BIDIRECTIONAL_ASSOCIATION" abstract="false"
> typeName="association.full2">
>             <children/>
>             <parents/>
>             <DictionaryProperties>
>
> <DictionaryProperty>simple.property.empty4</DictionaryProperty>
>
> <DictionaryProperty>composite.property.empty4</DictionaryProperty>
>             </DictionaryProperties>
>             <sourcePart>part.full2</sourcePart>
>             <targetPart>part.full3</targetPart>
>             <resolverStrategy>resolver.strategy</resolverStrategy>
>         </DictionaryAssociation>
>     </DictionaryAssociations>
>     <DictionaryFeatures>
>         <DictionaryFeature composite="false" abstract="false"
> typeName="feature.empty1">
>             <children/>
>             <parents/>
>             <DictionaryProperties/>
>             <associations/>
>             <parentComposites/>
>             <parts/>
>         </DictionaryFeature>
>         <DictionaryFeature composite="true" compositionType="SEQUENCE"
> abstract="true" typeName="feature.full8">
>             <children>
>                 <child>feature.empty9</child>
>             </children>
>             <parents/>
>             <DictionaryProperties>
>
> <DictionaryProperty>composite.property.empty5</DictionaryProperty>
>
> <DictionaryProperty>simple.property.empty5</DictionaryProperty>
>             </DictionaryProperties>
>             <associations>
>                 <association>association.empty3</association>
>                 <association>association.empty4</association>
>             </associations>
>             <parentComposites>
>                 <parentComposite>feature.empty10</parentComposite>
>             </parentComposites>
>             <parts>
>                 <part>part.empty4</part>
>             </parts>
>             <code>code</code>
>         </DictionaryFeature>
>     </DictionaryFeatures>
>     <DictionaryPropertyNodes>
>         <DictionaryPropertyNode abstract="false"
> typeName="property.node.empty1">
>             <children/>
>             <parents/>
>             <DictionaryProperties/>
>         </DictionaryPropertyNode>
>         <DictionaryPropertyNode abstract="false"
> typeName="property.node.full3">
>             <children>
>                 <child>property.node.empty4</child>
>             </children>
>             <parents>
>                 <parent>property.node.empty5</parent>
>             </parents>
>             <DictionaryProperties>
>
> <DictionaryProperty>composite.property.empty11</DictionaryProperty>
>
> <DictionaryProperty>simple.property.empty8</DictionaryProperty>
>             </DictionaryProperties>
>         </DictionaryPropertyNode>
>     </DictionaryPropertyNodes>
>     <DictionaryProperties>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="CompositeDictionaryProperty" propertyType="COMPOSITE_ROOT"
> inherited="false" typeName="composite.property.empty1">
>             <maxCardinality>2147483647</maxCardinality>
>             <minCardinality>-2147483648</minCardinality>
>             <children/>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="CompositeDictionaryProperty" propertyType="COMPOSITE_ROOT"
> inherited="false" typeName="composite.property.empty2">
>             <maxCardinality>2147483647</maxCardinality>
>             <minCardinality>-2147483648</minCardinality>
>             <children/>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="CompositeDictionaryProperty" propertyType="COMPOSITE_ROOT"
> inherited="false" typeName="composite.property.empty3">
>             <maxCardinality>2147483647</maxCardinality>
>             <minCardinality>-2147483648</minCardinality>
>             <children/>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="CompositeDictionaryProperty" propertyType="COMPOSITE_CHILD"
> inherited="true" typeName="composite.property.full6">
>             <code>code</code>
>             <maxCardinality>3</maxCardinality>
>             <minCardinality>2</minCardinality>
>             <parentObject>feature.empty14</parentObject>
>             <parentProperty>composite.property.empty8</parentProperty>
>             <rootProperty>composite.property.empty7</rootProperty>
>             <children>
>                 <child>simple.property.empty6</child>
>             </children>
>             <propertyNode>property.node.empty2</propertyNode>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="SimpleDictionaryProperty" propertyType="SIMPLE_ROOT"
> inherited="false" typeName="simple.property.empty1">
>             <maxCardinality>2147483647</maxCardinality>
>             <minCardinality>-2147483648</minCardinality>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="SimpleDictionaryProperty" propertyType="SIMPLE_ROOT"
> inherited="false" typeName="simple.property.empty2">
>             <maxCardinality>2147483647</maxCardinality>
>             <minCardinality>-2147483648</minCardinality>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="SimpleDictionaryProperty" propertyType="SIMPLE_ROOT"
> inherited="false" typeName="simple.property.empty3">
>             <maxCardinality>2147483647</maxCardinality>
>             <minCardinality>-2147483648</minCardinality>
>         </DictionaryProperty>
>         <DictionaryProperty
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="SimpleDictionaryProperty" propertyType="SIMPLE_CHILD"
> inherited="true" typeName="simple.property.full7">
>             <code>code</code>
>             <maxCardinality>2</maxCardinality>
>             <minCardinality>1</minCardinality>
>             <parentObject>feature.empty16</parentObject>
>             <parentProperty>composite.property.empty9</parentProperty>
>             <rootProperty>composite.property.empty10</rootProperty>
>             <defaultValue>default-value</defaultValue>
>
> <dictionaryFeatureRange>feature.range2</dictionaryFeatureRange>
>             <referentFeature>feature.empty17</referentFeature>
>             <dictionaryValueRange>value.range1</dictionaryValueRange>
>             <valueTypeName>value-type-name</valueTypeName>
>         </DictionaryProperty>
>     </DictionaryProperties>
>     <DictionaryFeatureRanges>
>         <DictionaryFeatureRange typeName="feature.range1">
>             <DictionaryFeatures>
>                 <DictionaryFeature>feature.empty11</DictionaryFeature>
>             </DictionaryFeatures>
>         </DictionaryFeatureRange>
>     </DictionaryFeatureRanges>
>     <DictionaryValueRanges>
>         <DictionaryValueRange typeName="value.range2">
>             <DictionaryRangeItems>
>                 <DictionaryRangeItem>range.item3</DictionaryRangeItem>
>             </DictionaryRangeItems>
>             <valueTypeName>value-type-name</valueTypeName>
>         </DictionaryValueRange>
>     </DictionaryValueRanges>
>     <DictionaryRangeItems>
>         <DictionaryRangeItem typeName="range.item2">
>             <value>4</value>
>         </DictionaryRangeItem>
>     </DictionaryRangeItems>
>     <DictionaryValueTypeNames>
>         <DictionaryValueTypeName>a value type
> name</DictionaryValueTypeName>
>
> <DictionaryValueTypeName>value-type-name</DictionaryValueTypeName>
>     </DictionaryValueTypeNames>
> </DictionaryModel>
>
>



-- 
Zeno Consulting, Inc.
http://www.zenoconsulting.biz
248.894.4922 phone
313.884.2977 fax

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Cast Your Vote

We need your help – Vote for DataDirect XML Products!

  • Best SOA or XML site

Winners and finalists announced at SOA World Conference in November.

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.