Если вы хотите вывести некоторый контент независимо от каких-либо условий, но оберните контент в <div>
в зависимости от условия:
<xsl:choose>
<xsl:when test="myConditionIsTrue">
<div>
<xsl:call-template name="bar"/>
</div>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="bar"/>
</xsl:otherwise>
</xsl:choose>
Вы можете изменить <xsl:call-template>
на <xsl:apply-templates>
или <xsl:value-of select="$myvariable" />
и т. Д. В зависимости от того, что является инвариантным содержимым.
Таким образом, вы будете рассматривать древовидную структуру как древовидную структуру, используя мощь процессора на основе дерева XML вместо того, чтобы пытаться бороться с ним. DOE может работать во многих случаях, но он не переносим, потому что процессоры XSLT не обязаны соблюдать его. На самом деле они не могут, если они не отвечают за сериализацию в конкретном конвейере. Приведенный выше метод позволяет избежать этой проблемы.