Docbook XSL und <methodparam choice="opt">

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Docbook XSL und <methodparam choice="opt">

    Hi,

    ich arbeite mich gerade in DocBook ein, weil ich plane eine Dokumentation in diesem Format (in XML, nicht SGML) zu erstellen.
    Zur Ausgabe verwende ich erstmal Saxon 6.5.3 und die DocBook XSL Stylesheet 1.65.1 für XHTML.
    Soweit so gut, funktioniert auch alles.

    Nur z. B. folgender Code:
    Code:
    <methodsynopsis>
    	<type>int</type>
    	<methodname>strpos</methodname>
    	
    	<methodparam>
    		<type>string</type>
    		<parameter>haystack</parameter>
    	</methodparam>
          	<methodparam>
          		<type>string</type>
          		<parameter>needle</parameter>
          	</methodparam>
          	<methodparam choice="opt">
          		<type>int</type>
          		<parameter>offset</parameter>
          	</methodparam>
    </methodsynopsis>
    wird mit der xhtml/docbook.xsl XSL Stylesheet in folgenden XHTML Code umgewandelt:

    Code:
    <code class="methodsynopsis">
     <span class="type">int </span>
     <span class="methodname">strpos</span>
     (<span class="methodparam"><span class="type">string </span><span class="parameter">haystack</span></span>,<br/>
      <span class="methodparam"><span class="type">string </span><span class="parameter">needle</span></span>,<br/>
      <span class="methodparam"><span class="type">int </span><span class="parameter">offset</span></span>);
    </code>
    Was mich daran extrem stört, ist, dass der letzte optionale Parameter "offset" genauso formatiert wird wie die benötigten Parameter.
    Im PHP Handbuch werden optionale Parameter durch [ ] gekennzeichnet. Die Docbook XSL macht das wohl nicht.


    Weiß jemand eine Lösung für mein Problem?
    Ich will jetzt nicht die Docbook XSL Vorlage umschreiben, zumal ich davon nichts verstehe. Gibt es eine fertige Vorlage, die optionale Funktionsparameter optisch von benötigten Parametern unterscheidet?
    Was verwendet denn die PHP Group dafür?
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

  • #2
    Falls es jemanden interessiert: durch Erweiterung der XSL Stylesheet um folgende Befehle kann man den gewünschten "Look" erzielen.

    Code:
    <!-- START -->
    <xsl:template match="methodsynopsis">
      <xsl:apply-templates />
    </xsl:template>
    
    <xsl:template match="methodsynopsis/type">
      <xsl:apply-templates />
      <xsl:text> </xsl:text>
    </xsl:template>
    
    <xsl:template match="methodsynopsis/void">
      <xsl:text> (void)</xsl:text>
    </xsl:template>
    
    <xsl:template match="methodparam/type">
      <xsl:apply-templates />
      <xsl:text> </xsl:text>
    </xsl:template>
    
    <xsl:template match="methodparam/parameter">
      <xsl:apply-templates />
    </xsl:template>
    <xsl:template match="methodparam">
      <xsl:if test="preceding-sibling::methodparam=false()">
        <xsl:text> (</xsl:text>
        <xsl:if test="@choice='opt' or initializer">
          <xsl:text>[</xsl:text>
        </xsl:if>
      </xsl:if>
      <xsl:apply-templates />
      <xsl:choose>
        <xsl:when test="following-sibling::methodparam">
          <xsl:choose>
            <xsl:when test="following-sibling::methodparam[position()=1]/attribute::choice[.='opt'] or following-sibling::methodparam[position()=1]/initializer">
              <xsl:text> [, </xsl:text>
            </xsl:when>
            <xsl:otherwise>
              <xsl:text>, </xsl:text>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:when>
        <xsl:otherwise>
          <xsl:for-each select="preceding-sibling::methodparam">
    				<xsl:if test="attribute::choice[.='opt'] or initializer">
    					<xsl:text>]</xsl:text>
    				</xsl:if>
          </xsl:for-each>
          <xsl:if test="self::methodparam/attribute::choice[.='opt'] or self::methodparam/initializer">
            <xsl:text>]</xsl:text>
          </xsl:if>
          <xsl:text>)</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
    <!-- END -->

    PS: Dies ist der einzige Thread im Forum, der etwas mit DocBook zu tun hat. Benutzt das sonst wirklich niemand? Es würde mich mal interessieren, womit Ihr Dokumentation erstellt und wie euer Workflow aussieht.
    Zuletzt geändert von Troublegum; 16.07.2004, 23:10.
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar

    Lädt...
    X