Saxon在XSLT中使用属性中的空格吗?

时间:2012-09-06 20:30:48

标签: xslt saxon

我想知道Saxon在XSLT期间如何以及为什么在XSL元素之间使用空格。以下是可能受上述行为影响的示例:

在XSLT期间,Saxon如何以及为何在XSL元素之间使用空格?

<div style="display:none;">
    <xsl:choose>
      <xsl:when test="true">
        <xsl:attribute name="id">
           <xsl:choose>
              <xsl:when>
               etc ec
              </xsl:when>
              <xsl:otherwise></xsl:otherwise>
            </xsl:choose>
          </xsl:attribute>
         </xsl:when>
         <xsl:otherwise></xsl:otherwise>

</div>

为什么<div<xsl:choose>之间的空格可能会导致以下错误:

XSLT attribute node (id) cannot be created after the children of the containing element

1 个答案:

答案 0 :(得分:1)

只包含空格的文本节点(如示例中的那个)没有任何效果(它们在解析的早期阶段被删除)除非您碰巧在某些父元素上具有属性xml:space =“preserve”在样式表中。 (在样式表中放置xml:space =“preserve”几乎总是坏消息,出于这样的原因,但人们会不时地这样做,它可以解决这里的问题。)

另一种可能性(我在12年中只看过一次......)是看起来像空白的东西不是。例如,它可能包含一个不间断的空间或零宽度的空间,它看起来是白色但不是正式的空白。