[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] XPath which tests that an element does not have mixed content?


Subject: RE: [xsl] XPath which tests that an element does not have mixed content?
From: "Houghton,Andrew" <houghtoa@xxxxxxxx>
Date: Thu, 3 Nov 2011 15:27:13 -0400

count() is an expensive operation, in this case, Brandon's XML suggests that
well formed instance documents should only have one Person element under the
author element with the exception of instance documents having more. Many
times the expression count() = 1 can be changed to not(exists(*[2])) since the
second element will always exist for >1 elements without having to count *all*
the elements then compare that amount against the value 1.

Andy.

> -----Original Message-----
> From: Brandon Ibach [mailto:brandon.ibach@xxxxxxxxxxxxxxxxxxx]
> Sent: Thursday, November 03, 2011 15:08
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] XPath which tests that an element does not have
> mixed content?
>
> I may be misinterpreting your requirement, but based on my initial
> read, I'd go with something like the following, which should work with
> any version of XPath/XSLT.  It is written to be evaluated in the
> context of <author>.
>
> count(Person) = 1 and not(text()[normalize-space(.)])
>
> -Brandon :)
>
>
> On Thu, Nov 3, 2011 at 2:44 PM, Costello, Roger L. <costello@xxxxxxxxx>
> wrote:
> > Hi Folks,
> >
> > Would you please recommend an XPath expression which ensures that the
> content of <author> is optional whitespace, <Person>, optional
> whitespace, and nothing else:
> >
> >    <author>
> >        <Person>
> >            <name>Simon L. Peyton Jones</name>
> >        </Person>
> >    </author>
> >
> > The result of the XPath expression is true if the content is as
> desired and false otherwise. The XPath should return true for the above
> example and false for the below example:
> >
> >    <author>
> >       The person is:
> >        <Person>
> >            <name>Simon L. Peyton Jones</name>
> >        </Person>
> >    </author>
> >
> >
> > /Roger


Current Thread
Keywords