4.22

Sezione 4: Sviluppatori

Q 4.22: Come si fa ad includere un affermazione condizionale nel mio XML?

Non puoi: XML non è un linguaggio di programmazione.

 

Non puoi: XML non è un linguaggio di programmazione, quindi non puoi scrivere cose come

<foo if{DB}=”A”>bar</foo>

Ma puoi avere un criterio condizionale in uno Schema, DTD, o un processore, e alcuni DTD forniscono attributi per elaborazione condizionale.

Se hai bisogno di un elemento opzionale, basato su criteri interni o esterni, puoi farlo in uno schema. I DTD non hanno meccanismi referenziali interni, quindi non è possibile esprimere questo tipo di condizionali in un DTD al livello dell’elemento individuale.

È possibile esprimere un condizionale di presenza o assenza in un DTD per l’intero documento, usando delle Entità di Parametro come interruttori Boolean per includere o ignorare certe sezioni del DTD in base alle impostazioni sia incorporate nel DTD o fornite dal subset interno. Sia i DTD TEI che quelli Dockbook hanno usato questo meccanismo per implementare la modularità.

In alternativa, puoi rendere l’elemento completamente opzionale in un DTD o uno Schema, e fornire codice nel tuo software di elaborazione che controlli la sua assenza o presenza. Questo differisce il controllo fino allo stadio di elaborazione: una delle ragioni è per l’utilizzo di Schemi è quella di fornire questo tipo di controllo nel momento della creazione e modifica del documento.

Nei linguaggi di elaborazione come XSLT, ci sono costrutti per le elaborazioni condizionali, sia per semplici SE e per scelte in base al caso esclusive:

<xsl:if test="@foo='bar'">
  <xsl:text>Hello, world!</xsl:text>
</xsl:if>

<xsl:choose>
  <xsl:when test="$type=1">
    <xsl:apply-templates select="//*[@class='special']"/>
  </xsl:when>
  <xsl:when test="$type=2">
    <xsl:apply-templates select="/foo/bar"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:apply-templates/>
  </xsl:otherwise>
</xsl:choose>

DocBook e molti altri DTD e Schemi forniscono attributi su alcuni elementi per le specifiche di effettività, dicendo quale parte del documento si applica in quali circostanze. I software di elaborazione possono dunque isolarle e processarle in maniera adatta.

Leave a Comment

Your email address will not be published. Required fields are marked *