XSLT プロセッサは何ですか? XSLT は単に xml を変換するための言語であるため、「html 出力」はプロセッサに依存します。
この最初の解決策はあなたにとって単純すぎると思いますが、生の html の処理を避けるためにこれを使用する必要がありました
<xsl:copy-of select="child::node()" />
これは生の入力を複製する必要があるためです。私の場合、以下を使用して raw 属性を持つすべてのノードを抽出しました。
<xsl:for-each select="xmlData//node()[@raw]">
<xsl:copy-of select="child::node()" />
</xsl:for-each>
その他のオプション:
2) 後で実行する内容に応じて、各空のノードに属性を追加します。つまり、role="long"、role="short-hand" です。
3) 各ノードをループします (xsl:for-each)
<xsl:choose>
<xsl:when test="string-length(.)=0"> <!-- There is no child-->
<xsl:copy-of select="node()" />
</xsl:when>
<xsl:otherwise>
...whatever normal processing you have
</xsl:otherwise>
4) 問題を再定義します。どちらも有効な XHTML/XML であるため、問題を別の場所で再構成または修正できる可能性があります。
いずれにしても、問題を再現してローカルでテストできるように、質問にさらに情報を追加することをお勧めします。
PSコメントに入れるにはテキスト/コードが多すぎますが、それはこれが属する場所です。