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.