Re: [xml-dev] Parameterized entities?
Basically no, XML entities can not do that.
More generally if you parameterize using xslt/xpath the stylesheet can be aware of that structure whereas entities are a simple pre-filter by the xml parser.
Something like
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="3.0">
<xsl:variable name="files" as="map(xs:string,document-node())">
<xsl:map>
<xsl:for-each select="'arpt','nav','trm'">
<xsl:map-entry key="." select="doc(concat(.,'.xml'))"/>
</xsl:for-each>
</xsl:map>
</xsl:variable>
<xsl:template name="main">
<xsl:sequence select="'arpt is: ', $files ? arpt"/>
<xsl:sequence select="'nav is: ', $files ? nav"/>
<xsl:sequence select="'trm is: ', $files ? trm"/>
</xsl:template>
</xsl:stylesheet>
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="3.0">
<xsl:variable name="files" as="map(xs:string,document-node())">
<xsl:map>
<xsl:for-each select="'arpt','nav','trm'">
<xsl:map-entry key="." select="doc(concat(.,'.xml'))"/>
</xsl:for-each>
</xsl:map>
</xsl:variable>
<xsl:template name="main">
<xsl:sequence select="'arpt is: ', $files ? arpt"/>
<xsl:sequence select="'nav is: ', $files ? nav"/>
<xsl:sequence select="'trm is: ', $files ? trm"/>
</xsl:template>
</xsl:stylesheet>
Produces
$ saxon -it:main en.xsl
<?xml version="1.0" encoding="UTF-8"?>arpt is:
<a/>nav is:
<n/>trm is:
<t/>
<?xml version="1.0" encoding="UTF-8"?>arpt is:
<a/>nav is:
<n/>trm is:
<t/>
given suitable input xml files
On Thu, 16 Jun 2022 at 11:33, Roger L Costello <[email protected]> wrote:
Hi Folks,
Is there any way to express a parameterized ENTITY?
Example: I'd like to write something like this:
<!DOCTYPE xsl:stylesheet [
<!ENTITY file(f) "<xsl:variable name=f select='doc(f)'/>">
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
&file('ARPT.XML');
&file('NAV.XML');
&file('TRM.XML');
</xsl:stylesheet>
And have the XML parser perform the entity substitutions to generate this:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name='ARPT.XML' select="doc('ARPT.XML')"/>
<xsl:variable name='NAV.XML' select="doc('NAV.XML')"/>
<xsl:variable name='TRM.XML' select="doc('TRM.XML')"/>
</xsl:stylesheet>
Is there any way to do something like this?
/Roger
_______________________________________________________________________
XML-DEV is a publicly archived, unmoderated list hosted by OASIS
to support XML implementation and development. To minimize
spam in the archives, you must subscribe before posting.
[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
Or unsubscribe: [email protected]
subscribe: [email protected]
List archive: http://lists.xml.org/archives/xml-dev/
List Guidelines: http://www.oasis-open.org/maillists/guidelines.php