Seção 4: Desenvolvedores

Q 4.21: Como posso incluir uma declaração condicional no meu XML?

Impossível, pois: XML não é uma linguagem de programação.

Você não, pois: XML não é uma linguagem de programação , então você não pode fazer menções do tipo

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

Mas você pode ter critérios condicionais em um Esquema, DTD ou um processador, e alguns DTDs fornecem atributos para o processamento condicional.

Se você precisa fazer um elemento opcional, com base em alguns critérios internos ou externos, você pode fazê-lo em um Schema. DTDs não têm mecanismo de referência interno, portanto, não é possível expressar esse tipo de condicionalidade em uma DTD no nível de elemento individual.

É possível expressar a condicionalidade de presença ou ausência em uma DTD para todo o documento, usando as Entidades de Parâmetros como comutadores Boolean para incluir ou ignorar determinadas seções do DTD com base em configurações digitadas na DTD ou fornecidas no subconjunto interno. Tanto o TEI quanto o Docbook DTDs usaram esse mecanismo para implementar a modularidade.

Alternativamente, você pode tornar o elemento totalmente opcional no DTD ou no Schema e fornecer código no seu software de processamento que verifica sua presença ou ausência. Isso diferencia a verificação até a fase de processamento: um dos motivos do Esquema é fornecer esse tipo de verificação no momento da criação ou edição do documento.

No processamento de idiomas como o XSLT, existem construções para o processamento condicional, tanto para IFs simples quanto para escolhas exclusivas caso a caso:

    <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 muitos outros DTDs e Schemas fornecem atributos em alguns elementos para a especificação de efetividades , dizendo quais partes do documento se aplicam em quais circunstâncias. O software de processamento pode então isolar estes e processá-los de acordo.