<!ENTITY preface.autolabel SYSTEM "../params/preface.autolabel.xml">
<!ENTITY process.empty.source.toc SYSTEM "../params/process.empty.source.toc.xml">
<!ENTITY process.source.toc SYSTEM "../params/process.source.toc.xml">
+<!ENTITY profile.arch SYSTEM "../params/profile.arch.xml">
+<!ENTITY profile.condition SYSTEM "../params/profile.condition.xml">
+<!ENTITY profile.conformance SYSTEM "../params/profile.conformance.xml">
+<!ENTITY profile.lang SYSTEM "../params/profile.lang.xml">
+<!ENTITY profile.os SYSTEM "../params/profile.os.xml">
+<!ENTITY profile.revision SYSTEM "../params/profile.revision.xml">
+<!ENTITY profile.revisionflag SYSTEM "../params/profile.revisionflag.xml">
+<!ENTITY profile.role SYSTEM "../params/profile.role.xml">
+<!ENTITY profile.security SYSTEM "../params/profile.security.xml">
+<!ENTITY profile.userlevel SYSTEM "../params/profile.userlevel.xml">
+<!ENTITY profile.vendor SYSTEM "../params/profile.vendor.xml">
+<!ENTITY profile.attribute SYSTEM "../params/profile.attribute.xml">
+<!ENTITY profile.value SYSTEM "../params/profile.value.xml">
+<!ENTITY profile.separator SYSTEM "../params/profile.separator.xml">
<!ENTITY punct.honorific SYSTEM "../params/punct.honorific.xml">
<!ENTITY qanda.inherit.numeration SYSTEM "../params/qanda.inherit.numeration.xml">
<!ENTITY qandadiv.autolabel SYSTEM "../params/qandadiv.autolabel.xml">
&verbatim.properties;
</reference>
+<reference><title>Profiling</title>
+<partintro>
+<para>Following parameters can be used for attribute value based
+profiling of your document. For more info about profiling look at
+<ulink
+url="http://docbook.sourceforge.net/projects/xsl/doc/tools/profiling.html">http://docbook.sourceforge.net/projects/xsl/doc/tools/profiling.html</ulink>.</para>
+</partintro>
+&profile.arch;
+&profile.condition;
+&profile.conformance;
+&profile.lang;
+&profile.os;
+&profile.revision;
+&profile.revisionflag;
+&profile.role;
+&profile.security;
+&profile.userlevel;
+&profile.vendor;
+&profile.attribute;
+&profile.value;
+&profile.separator;
+</reference>
+
<!--
<reference><title></title>
</reference>
<src:fragref linkend="preface.autolabel.frag"/>
<src:fragref linkend="process.empty.source.toc.frag"/>
<src:fragref linkend="process.source.toc.frag"/>
+<src:fragref linkend="profile.arch.frag"/>
+<src:fragref linkend="profile.condition.frag"/>
+<src:fragref linkend="profile.conformance.frag"/>
+<src:fragref linkend="profile.lang.frag"/>
+<src:fragref linkend="profile.os.frag"/>
+<src:fragref linkend="profile.revision.frag"/>
+<src:fragref linkend="profile.revisionflag.frag"/>
+<src:fragref linkend="profile.role.frag"/>
+<src:fragref linkend="profile.security.frag"/>
+<src:fragref linkend="profile.userlevel.frag"/>
+<src:fragref linkend="profile.vendor.frag"/>
+<src:fragref linkend="profile.attribute.frag"/>
+<src:fragref linkend="profile.value.frag"/>
+<src:fragref linkend="profile.separator.frag"/>
<src:fragref linkend="punct.honorific.frag"/>
<src:fragref linkend="qanda.inherit.numeration.frag"/>
<src:fragref linkend="qandadiv.autolabel.frag"/>
../params/preface.autolabel.xml \
../params/process.empty.source.toc.xml \
../params/process.source.toc.xml \
+ ../params/profile.arch.xml \
+ ../params/profile.condition.xml \
+ ../params/profile.conformance.xml \
+ ../params/profile.lang.xml \
+ ../params/profile.os.xml \
+ ../params/profile.revision.xml \
+ ../params/profile.revisionflag.xml \
+ ../params/profile.role.xml \
+ ../params/profile.security.xml \
+ ../params/profile.userlevel.xml \
+ ../params/profile.vendor.xml \
+ ../params/profile.attribute.xml \
+ ../params/profile.value.xml \
+ ../params/profile.separator.xml \
../params/punct.honorific.xml \
../params/qanda.defaultlabel.xml \
../params/qanda.inherit.numeration.xml \
<!ENTITY preface.autolabel SYSTEM "../params/preface.autolabel.xml">
<!ENTITY process.empty.source.toc SYSTEM "../params/process.empty.source.toc.xml">
<!ENTITY process.source.toc SYSTEM "../params/process.source.toc.xml">
+<!ENTITY profile.arch SYSTEM "../params/profile.arch.xml">
+<!ENTITY profile.condition SYSTEM "../params/profile.condition.xml">
+<!ENTITY profile.conformance SYSTEM "../params/profile.conformance.xml">
+<!ENTITY profile.lang SYSTEM "../params/profile.lang.xml">
+<!ENTITY profile.os SYSTEM "../params/profile.os.xml">
+<!ENTITY profile.revision SYSTEM "../params/profile.revision.xml">
+<!ENTITY profile.revisionflag SYSTEM "../params/profile.revisionflag.xml">
+<!ENTITY profile.role SYSTEM "../params/profile.role.xml">
+<!ENTITY profile.security SYSTEM "../params/profile.security.xml">
+<!ENTITY profile.userlevel SYSTEM "../params/profile.userlevel.xml">
+<!ENTITY profile.vendor SYSTEM "../params/profile.vendor.xml">
+<!ENTITY profile.attribute SYSTEM "../params/profile.attribute.xml">
+<!ENTITY profile.value SYSTEM "../params/profile.value.xml">
+<!ENTITY profile.separator SYSTEM "../params/profile.separator.xml">
<!ENTITY punct.honorific SYSTEM "../params/punct.honorific.xml">
<!ENTITY qanda.defaultlabel SYSTEM "../params/qanda.defaultlabel.xml">
<!ENTITY qanda.inherit.numeration SYSTEM "../params/qanda.inherit.numeration.xml">
&navig.showtitles;
</reference>
+<reference><title>Profiling</title>
+<partintro>
+<para>Following parameters can be used for attribute value based
+profiling of your document. For more info about profiling look at
+<ulink
+url="http://docbook.sourceforge.net/projects/xsl/doc/tools/profiling.html">http://docbook.sourceforge.net/projects/xsl/doc/tools/profiling.html</ulink>.</para>
+</partintro>
+&profile.arch;
+&profile.condition;
+&profile.conformance;
+&profile.lang;
+&profile.os;
+&profile.revision;
+&profile.revisionflag;
+&profile.role;
+&profile.security;
+&profile.userlevel;
+&profile.vendor;
+&profile.attribute;
+&profile.value;
+&profile.separator;
+</reference>
+
<reference><title>HTML Help</title>
&htmlhelp.encoding;
&htmlhelp.autolabel;
<src:fragref linkend="preface.autolabel.frag"/>
<src:fragref linkend="process.empty.source.toc.frag"/>
<src:fragref linkend="process.source.toc.frag"/>
+<src:fragref linkend="profile.arch.frag"/>
+<src:fragref linkend="profile.condition.frag"/>
+<src:fragref linkend="profile.conformance.frag"/>
+<src:fragref linkend="profile.lang.frag"/>
+<src:fragref linkend="profile.os.frag"/>
+<src:fragref linkend="profile.revision.frag"/>
+<src:fragref linkend="profile.revisionflag.frag"/>
+<src:fragref linkend="profile.role.frag"/>
+<src:fragref linkend="profile.security.frag"/>
+<src:fragref linkend="profile.userlevel.frag"/>
+<src:fragref linkend="profile.vendor.frag"/>
+<src:fragref linkend="profile.attribute.frag"/>
+<src:fragref linkend="profile.value.frag"/>
+<src:fragref linkend="profile.separator.frag"/>
<src:fragref linkend="punct.honorific.frag"/>
<src:fragref linkend="qanda.defaultlabel.frag"/>
<src:fragref linkend="qanda.inherit.numeration.frag"/>
--- /dev/null
+<refentry id="profile.arch">
+<refmeta>
+<refentrytitle>profile.arch</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.arch</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">arch</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.arch.frag'>
+<xsl:param name="profile.arch" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.attribute">
+<refmeta>
+<refentrytitle>profile.attribute</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.attribute</refname>
+<refpurpose>Name of user-specified profiling attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.attribute.frag'>
+<xsl:param name="profile.attribute" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>This parameter is used in conjuction with <link
+linkend="profile.value"><parameter>profile.value</parameter></link>.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.condition">
+<refmeta>
+<refentrytitle>profile.condition</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.condition</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">condition</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.condition.frag'>
+<xsl:param name="profile.condition" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.conformance">
+<refmeta>
+<refentrytitle>profile.conformance</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.conformance</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">conformance</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.conformance.frag'>
+<xsl:param name="profile.conformance" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.lang">
+<refmeta>
+<refentrytitle>profile.lang</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.lang</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">lang</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.lang.frag'>
+<xsl:param name="profile.lang" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.os">
+<refmeta>
+<refentrytitle>profile.os</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.os</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">os</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.os.frag'>
+<xsl:param name="profile.os" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.revision">
+<refmeta>
+<refentrytitle>profile.revision</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revision</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">revision</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.revision.frag'>
+<xsl:param name="profile.revision" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.revisionflag">
+<refmeta>
+<refentrytitle>profile.revisionflag</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revisionflag</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">revisionflag</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.revisionflag.frag'>
+<xsl:param name="profile.revisionflag" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.role">
+<refmeta>
+<refentrytitle>profile.role</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.role</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">role</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.role.frag'>
+<xsl:param name="profile.role" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.security">
+<refmeta>
+<refentrytitle>profile.security</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.security</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">security</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.security.frag'>
+<xsl:param name="profile.security" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.separator">
+<refmeta>
+<refentrytitle>profile.separator</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.separator</refname>
+<refpurpose>Separator character for compound profile values</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.separator.frag'>
+<xsl:param name="profile.separator" select="';'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Separator character for compound profile values.</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.userlevel">
+<refmeta>
+<refentrytitle>profile.userlevel</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.userlevel</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">userlevel</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.userlevel.frag'>
+<xsl:param name="profile.userlevel" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.value">
+<refmeta>
+<refentrytitle>profile.value</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.value</refname>
+<refpurpose>Target profile for user-specified attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.value.frag'>
+<xsl:param name="profile.value" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>When you are using this parameter you must also specify name of
+profiling attribute with parameter <link
+linkend="profile.attribute"><parameter>profile.attribute</parameter></link>.</para>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
--- /dev/null
+<refentry id="profile.vendor">
+<refmeta>
+<refentrytitle>profile.vendor</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.vendor</refname>
+<refpurpose>Target profile for <sgmltag class="attribute">vendor</sgmltag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='profile.vendor.frag'>
+<xsl:param name="profile.vendor" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<link linkend="profile.separator"><parameter>profile.separator</parameter></link>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsect1>
+</refentry>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
-<!-- Which OSes to select -->
-<xsl:param name="os"/>
-
-<!-- Which UserLevels to select -->
-<xsl:param name="ul"/>
-
-<!-- Which Archs to select -->
-<xsl:param name="arch"/>
-
-<!-- Name of attribute with profiling information -->
-<xsl:param name="attr"/>
-
-<!-- Which $attrs to select -->
-<xsl:param name="val"/>
-
-<!-- Seperator for profiling values -->
-<xsl:param name="sep" select="';'"/>
-
<!-- Copy all non-element nodes -->
<xsl:template match="@*|text()|comment()|processing-instruction()" mode="profile">
<xsl:copy/>
<!-- Profile elements based on input parameters -->
<xsl:template match="*" mode="profile">
+
+ <xsl:variable name="arch.content">
+ <xsl:if test="@arch">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.arch"/>
+ <xsl:with-param name="b" select="@arch"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="arch.ok" select="not(@arch) or not($profile.arch) or
+ $arch.content != '' or @arch = ''"/>
+
+ <xsl:variable name="condition.content">
+ <xsl:if test="@condition">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.condition"/>
+ <xsl:with-param name="b" select="@condition"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="condition.ok" select="not(@condition) or not($profile.condition) or
+ $condition.content != '' or @condition = ''"/>
+
+ <xsl:variable name="conformance.content">
+ <xsl:if test="@conformance">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.conformance"/>
+ <xsl:with-param name="b" select="@conformance"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="conformance.ok" select="not(@conformance) or not($profile.conformance) or
+ $conformance.content != '' or @conformance = ''"/>
+
+ <xsl:variable name="lang.content">
+ <xsl:if test="@lang">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.lang"/>
+ <xsl:with-param name="b" select="@lang"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="lang.ok" select="not(@lang) or not($profile.lang) or
+ $lang.content != '' or @lang = ''"/>
+
<xsl:variable name="os.content">
<xsl:if test="@os">
<xsl:call-template name="cross.compare">
- <xsl:with-param name="a" select="$os"/>
+ <xsl:with-param name="a" select="$profile.os"/>
<xsl:with-param name="b" select="@os"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
- <xsl:variable name="os.ok" select="not(@os) or not($os) or
+ <xsl:variable name="os.ok" select="not(@os) or not($profile.os) or
$os.content != '' or @os = ''"/>
- <xsl:variable name="ul.content">
+ <xsl:variable name="revision.content">
+ <xsl:if test="@revision">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.revision"/>
+ <xsl:with-param name="b" select="@revision"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="revision.ok" select="not(@revision) or not($profile.revision) or
+ $revision.content != '' or @revision = ''"/>
+
+ <xsl:variable name="revisionflag.content">
+ <xsl:if test="@revisionflag">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.revisionflag"/>
+ <xsl:with-param name="b" select="@revisionflag"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="revisionflag.ok" select="not(@revisionflag) or not($profile.revisionflag) or
+ $revisionflag.content != '' or @revisionflag = ''"/>
+
+ <xsl:variable name="role.content">
+ <xsl:if test="@role">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.role"/>
+ <xsl:with-param name="b" select="@role"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="role.ok" select="not(@role) or not($profile.role) or
+ $role.content != '' or @role = ''"/>
+
+ <xsl:variable name="security.content">
+ <xsl:if test="@security">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.security"/>
+ <xsl:with-param name="b" select="@security"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="security.ok" select="not(@security) or not($profile.security) or
+ $security.content != '' or @security = ''"/>
+
+ <xsl:variable name="userlevel.content">
<xsl:if test="@userlevel">
<xsl:call-template name="cross.compare">
- <xsl:with-param name="a" select="$ul"/>
+ <xsl:with-param name="a" select="$profile.userlevel"/>
<xsl:with-param name="b" select="@userlevel"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
- <xsl:variable name="ul.ok" select="not(@userlevel) or not($ul) or
- $ul.content != '' or @userlevel = ''"/>
+ <xsl:variable name="userlevel.ok" select="not(@userlevel) or not($profile.userlevel) or
+ $userlevel.content != '' or @userlevel = ''"/>
- <xsl:variable name="arch.content">
- <xsl:if test="@arch">
+ <xsl:variable name="vendor.content">
+ <xsl:if test="@vendor">
<xsl:call-template name="cross.compare">
- <xsl:with-param name="a" select="$arch"/>
- <xsl:with-param name="b" select="@arch"/>
+ <xsl:with-param name="a" select="$profile.vendor"/>
+ <xsl:with-param name="b" select="@vendor"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
- <xsl:variable name="arch.ok" select="not(@arch) or not($arch) or
- $arch.content != '' or @arch = ''"/>
+ <xsl:variable name="vendor.ok" select="not(@vendor) or not($profile.vendor) or
+ $vendor.content != '' or @vendor = ''"/>
- <xsl:variable name="attr.content">
- <xsl:if test="@*[local-name()=$attr]">
+ <xsl:variable name="attribute.content">
+ <xsl:if test="@*[local-name()=$profile.attribute]">
<xsl:call-template name="cross.compare">
- <xsl:with-param name="a" select="$val"/>
- <xsl:with-param name="b" select="@*[local-name()=$attr]"/>
+ <xsl:with-param name="a" select="$profile.value"/>
+ <xsl:with-param name="b" select="@*[local-name()=$profile.attribute]"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
- <xsl:variable name="attr.ok" select="not(@*[local-name()=$attr]) or not($val) or
- $attr.content != ''
- or @*[local-name()=$attr] = '' or not($attr)"/>
+ <xsl:variable name="attribute.ok"
+ select="not(@*[local-name()=$profile.attribute]) or not($profile.value) or
+ $attribute.content != '' or
+ @*[local-name()=$profile.attribute] = '' or not($profile.attribute)"/>
- <xsl:if test="$os.ok and $ul.ok and $arch.ok and $attr.ok">
+ <xsl:if test="$arch.ok and $condition.ok and $conformance.ok and $lang.ok and $os.ok
+ and $revision.ok and $revisionflag.ok and $role.ok and $security.ok
+ and $userlevel.ok and $vendor.ok and $attribute.ok">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="profile"/>
</xsl:copy>
<xsl:template name="cross.compare">
<xsl:param name="a"/>
<xsl:param name="b"/>
- <xsl:param name="head" select="substring-before(concat($a, $sep), $sep)"/>
- <xsl:param name="tail" select="substring-after($a, $sep)"/>
+ <xsl:param name="sep" select="$profile.separator"/>
+ <xsl:variable name="head" select="substring-before(concat($a, $sep), $sep)"/>
+ <xsl:variable name="tail" select="substring-after($a, $sep)"/>
<xsl:if test="contains(concat($sep, $b, $sep), concat($sep, $head, $sep))">1</xsl:if>
<xsl:if test="$tail">
<xsl:call-template name="cross.compare">