- From: Norman Walsh <ndw@nwalsh.com>
- Date: Thu, 07 Mar 2013 11:45:13 -0600
- To: public-xml-processing-model-wg@w3.org
- Message-ID: <m238w7yuhi.fsf@nwalsh.com>
Good morning,
This morning, Alex and I had a brief IM chat about use case 5.11
http://www.w3.org/TR/xproc-requirements/#use-case-make-absolute-urls
I think this pipeline (would) solve 5.11:
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" version="1.0"
xmlns:c="http://www.w3.org/ns/xproc-step"
xmlns:cx="http://xmlcalabash.com/ns/extensions"
xmlns:exf="http://exproc.org/standard/functions"
exclude-inline-prefixes="cx exf"
name="main">
<p:input port="source"/>
<p:input port="parameters" kind="parameter"/>
<p:output port="result"/>
<p:serialization port="result" indent="true"/>
<p:xinclude fixup-xml-base="true"/>
<p:delete match="@xml:base"/>
<p:validate-with-xml-schema>
<p:input port="schema">
<p:document href="schema.xsd"/>
</p:input>
</p:validate-with-xml-schema>
<p:xslt>
<p:input port="stylesheet">
<p:document href="fixuris.xsl"/>
</p:input>
</p:xslt>
</p:declare-step>
With this fixuris.xsl stylesheet:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:import-schema schema-location="schema.xsd"/>
<xsl:template match="element()">
<xsl:copy>
<xsl:apply-templates select="@*,node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="attribute(*,xs:anyURI)">
<xsl:attribute name="{node-name(.)}" select="resolve-uri(.)"/>
</xsl:template>
<xsl:template match="attribute()|text()|comment()|processing-instruction()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
and this schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="doc">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element maxOccurs="unbounded" ref="chap"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title" type="xs:string"/>
<xs:element name="chap">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element maxOccurs="unbounded" ref="para"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="para">
<xs:complexType mixed="true">
<xs:attribute name="href" use="required" type="xs:anyURI"/>
<xs:attribute name="non-href" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Unfortunately, Saxon's XSD validation appears to lose base URIs. :-(
I'm pursuing that on the saxon-help list.
Be seeing you,
norm
--
Norman Walsh
Lead Engineer
MarkLogic Corporation
Phone: +1 512 761 6676
www.marklogic.com
Received on Thursday, 7 March 2013 17:45:45 UTC