Subject: RE: [xsl] Getting a specific element count from a generic match From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 10 Apr 2006 20:13:55 +0100 |
> Not sure if it helps or not, but here is the vb.net code I use: OK, thanks, you didn't mention it was on .NET or vb.net in particular. Looks as if I might need to do some more testing in that environment: nearly all my .NET testing was from C#. If you hit other such problems, please do raise them on the saxon-help list or forum. The .NET product is quite new so usability feedback is very much appreciated. Michael Kay http://www.saxonica.com/ > > Public Sub Transform(ByVal xslDoc As String, ByVal > xmlDoc As String, _ > ByVal output As String) > > > 'Create a New Processor instance > Dim processor As New Processor > 'Load the source document > Dim input As XdmNode = > processor.NewDocumentBuilder.Build(New Uri(xmlDoc)) > 'Create the transformer for the stylesheet > Dim transformer As XsltTransformer > Try > transformer = _ > processor.NewXsltCompiler().Compile(New > Uri(xslDoc)).Load() > Catch ex As Exception > MsgBox("Exception" & ex.ToString) > MsgBox(ex.StackTrace) > Throw New Exception(ex.Message) > End Try > > 'Set the root node of the source document to be the > initial context node > transformer.InitialContextNode = input > > 'Create the serializer > Dim serializer As New Serializer > Try > serializer.SetOutputStream(New FileStream(output, > FileMode.Create, FileAccess.Write)) > 'Transform the source XML > transformer.Run(serializer) > Catch ex As Exception > Throw New Exception(ex.Message) > Finally > serializer = Nothing > End Try > > End Sub > > > On 4/10/06, Michael Kay <mike@xxxxxxxxxxxx> wrote: > > > When using the Saxon api the error message I'm getting > back is "Failed > > > to compile stylesheet. 1 error detected". Figuring this > wasn't quite > > > enough info to go on > > > > You're doing something wrong in your API calls if you're > not seeing the > > error messages... > > > > I ran it through stylus with Saxon 8.1.1, I get > > > "Required type of first argument of name() is node(); > supplied value > > > has type xdt:anyAtomicType" on line 11 below: > > > > > > When I change line 5 to <xsl:variable name="namelist" > > > select="//*[not(name() = following::*/name())]"/> I still > get an error > > > through Stylus, but it runs fine through .net. > > > > 8.1.1 was quite a long time ago, before node/name() was > permitted by the > > specs. > > > > Michael Kay > > http://www.saxonica.com/ > > > > > > > > 1 <?xml version="1.0" encoding="utf-8"?> > > > 2 <xsl:stylesheet version="2.0" > > > 3 x mlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > > 4 > > > 5 <xsl:variable name="namelist" > > > select="distinct-values(//*/node-name())"/> > > > 6 > > > 7 <xsl:variable name="root" select="/"/> > > > 8 > > > 9 <xsl:template match="/"> > > > 10 <xsl:for-each select="$namelist"> > > > 11 <xsl:variable name="thisname" select="name()"/> > > > 12 <name value="{$thisname}" > > > count="{count($root//*[name() = $thisname])}"/> > > > 13 </xsl:for-each> > > > 14 </xsl:template> > > > 15 > > > 16 </xsl:stylesheet> > > > > > > On 4/7/06, Jay Bryant <jay@xxxxxxxxxxxx> wrote: > > > > Good one, Mike, and thanks for reminding me about > distinct-values(). > > > > > > > > Jay Bryant > > > > Bryant Communication Services > > > > > > > > ----- Original Message ----- > > > > From: "Michael Kay" <mike@xxxxxxxxxxxx> > > > > To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> > > > > Sent: Friday, April 07, 2006 3:13 PM > > > > Subject: RE: [xsl] Getting a specific element count from a > > > generic match > > > > > > > > > > > > > > > > > > > > <?xml version="1.0" encoding="UTF-8"?> > > > > > > <xsl:stylesheet version="2.0" > > > > > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > > > > > > > > > > > <xsl:variable name="namelist" select="//*[not(name() = > > > > > > following::*/name())]"/> > > > > > > > > > > > > > > > > We're talking 2.0 here: you can get all the distinct > names using > > > > > > > > > > select="distinct-values(//*/node-name())" > > > > > > > > > > That's O(n log n) rather than O(n^2), and it's also > > > namespace-aware. > > > > > > > > > > Michael Kay > > > > > http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Getting a specific elemen, Spencer Tickner | Thread | Re: [xsl] Getting a specific elemen, andrew welch |
Re: [xsl] Getting a specific elemen, Spencer Tickner | Date | [xsl] passing parameters to generic, Robert Frank |
Month |