Subject: RE: [xsl] [XSLT 2.0] Checking that an element's value has the desired datatype? From: "Costello, Roger L." <costello@xxxxxxxxx> Date: Tue, 17 Oct 2006 07:00:23 -0400 |
> As stated earlier I don't believe he wants to get the type, he wants > to constrain the value, and as for me I am not at all interested in > the type. Exactly right. Thanks Bryan. I sense that ya'll are wondering where I am going with this? Schematron + xPath 2.0 is extremely powerful. In fact, one could argue that it can do everything that XML Schema (or RelaxNG) can do, plus a lot more. For example, below is an XML document showing information about an aircraft and vertical obstructions on its flight path. One critical operational constraint is: "Check that the aircraft's altitude is at least 500 feet above all the vertical obstructions" This "co-constraint" cannot be expressed using XML Schemas (or RelaxNG). But with Schematron + xPath 2.0 the co-constraint can be expressed using this xPath: every $j in flt:VerticalObstruction satisfies if ($j/flt:Height) then number(flt:Aircraft/flt:Altitude) gt number($j/flt:Height + $j/flt:Elevation + 500) else number(flt:Aircraft/flt:Altitude) gt number($j/flt:Elevation + 500) As best I can tell, the functionality of Schematron + xPath 2.0 is a superset of XML Schemas (and RelaxNG). However, I am still researching this. The findings in this discussion will be incorporated into a paper I am writing. I appreciate all your input. /Roger <?xml version="1.0"?> <Flight xmlns="http://www.aviation.org"> <Aircraft type="Boeing 747"> <Altitude units="feet" reference="MSL">3300</Altitude> <Location> <Latitude>42.371</Latitude> <Longitude>-71.000</Longitude> </Location> </Aircraft> <VerticalObstruction type="tower"> <!-- The top of the tower is 1500 feet --> <Elevation units="feet">1000</Elevation> <Height units="feet">500</Height> <Location> <Latitude>42.371</Latitude> <Longitude>-71.025</Longitude> </Location> </VerticalObstruction> <VerticalObstruction type="mountain"> <Elevation units="feet">2600</Elevation> <Location> <Latitude>42.371</Latitude> <Longitude>-71.155</Longitude> </Location> </VerticalObstruction> <VerticalObstruction type="building"> <!-- The top of the building is 700 feet --> <Elevation units="feet">500</Elevation> <Height units="feet">200</Height> <Location> <Latitude>42.371</Latitude> <Longitude>-71.299</Longitude> </Location> </VerticalObstruction> </Flight>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] [XSLT 2.0] Checking that , David Carlisle | Thread | Re: [xsl] [XSLT 2.0] Checking that , David Carlisle |
RE: [xsl] [XSLT 2.0] Checking that , Costello, Roger L. | Date | Re: [xsl] [XSLT 2.0] Checking that , Abel Braaksma |
Month |