OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: AW: [docbook] Profiling conditions


Johannes Paul wrote:

> As I mentioned in my question, our versions are normally called v4.0, v4.1,
> v5.0... But since I did not start with moving our .doc files to .xml files,
> I can use anything you consider appropriate. E.g. if it's easier, I'll leave
> the 'v' and just call them "4.1".

If in your version numbering scheme is true that 4.5 > 4.10 and if all 
newer versions contain all information from previous versions than 
things should be pretty easy. Otherwise I will stick with multiple 
version numbers assigned to profiled elements.

> Could you tell me a bit more specific where and how I could insert this
> numbering rules?

E.g. you can store version number in attribute condition:

<chapter condition="4.3">
...
</chapter>

In that case you can use following modified version of template:

<!-- 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 = ''"/>

   <!-- Modification starts here!!! -->
   <xsl:variable name="condition.ok" select="not(@condition) or 
not($profile.condition) or @condition &lt;= $profile.condition or 
@condition = ''"/>
   <!-- Modification ends here!!! -->

   <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="$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($profile.os) or
                                      $os.content != '' or @os = ''"/>

   <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="$profile.userlevel"/>
         <xsl:with-param name="b" select="@userlevel"/>
       </xsl:call-template>
     </xsl:if>
   </xsl:variable>
   <xsl:variable name="userlevel.ok" select="not(@userlevel) or 
not($profile.userlevel) or
                                             $userlevel.content != '' or 
@userlevel = ''"/>

   <xsl:variable name="vendor.content">
     <xsl:if test="@vendor">
       <xsl:call-template name="cross.compare">
         <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="vendor.ok" select="not(@vendor) or 
not($profile.vendor) or
                                          $vendor.content != '' or 
@vendor = ''"/>

   <xsl:variable name="attribute.content">
     <xsl:if test="@*[local-name()=$profile.attribute]">
       <xsl:call-template name="cross.compare">
         <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="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="$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:if>
</xsl:template>


-- 
------------------------------------------------------------------
   Jirka Kosek     e-mail: jirka@kosek.cz     http://www.kosek.cz
------------------------------------------------------------------
   Profesionální školení a poradenství v oblasti technologií XML.
         DocBook 18.-19.5.                 XSLT 24.-26.5.
         XML pro vývojáře 7.-8.6.          XSL-FO 16.6.
------------------------------------------------------------------

S/MIME Cryptographic Signature



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]