xslt中如何匹配非字符串
How match non string in xslt
我想匹配 xslt 2.0
中的非字符串。
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list>
</td>
我做过这样的模板
<xsl:template match="td">
<para>
<xsl:apply-templates/>
</tps:p>
</xsl:template>
当输入 xml 如下:
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list>
kmkmkmk
</td>
输出(正确输出):
<para>kmkmkmk</para>
当像下面这样输入 xml 时(td 和列表之间换行):
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list>
</td>
输出(输出不正确):
<para> </para>
但是当像下面这样输入 xml 时(td 和 list 之间没有新行):
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list></td>
输出(正确输出):
nothing display
我想在 td
没有任何文本时不显示,仅显示 td
有文本。
为什么在 <td>
和 <list>
之间有一条新线不能正常工作,哪里没有新线工作良好。我该如何解决这个问题?
您的样本不是最小且完整的,而是要转换一个 td
元素节点,您可以使用该元素节点具有非空白文本子内容
<xsl:template match="td[text()[normalize-space()]]">
<para>
<xsl:apply-templates/>
</para>
</xsl:template>
是否额外需要 <xsl:template match="td[not(text()[normalize-space()])]"/>
或 <xsl:template match="td[not(text()[normalize-space()])]"><xsl:apply-templates/></xsl:template>
取决于您如何设置其余转换。
我想匹配 xslt 2.0
中的非字符串。
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list>
</td>
我做过这样的模板
<xsl:template match="td">
<para>
<xsl:apply-templates/>
</tps:p>
</xsl:template>
当输入 xml 如下:
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list>
kmkmkmk
</td>
输出(正确输出):
<para>kmkmkmk</para>
当像下面这样输入 xml 时(td 和列表之间换行):
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list>
</td>
输出(输出不正确):
<para> </para>
但是当像下面这样输入 xml 时(td 和 list 之间没有新行):
<td><list>
<list-item>
<p>aaaa</p>
<list>
<list-item>
<p>bbb</p>
</list-item>
</list>
</list-item>
</list></td>
输出(正确输出):
nothing display
我想在 td
没有任何文本时不显示,仅显示 td
有文本。
为什么在 <td>
和 <list>
之间有一条新线不能正常工作,哪里没有新线工作良好。我该如何解决这个问题?
您的样本不是最小且完整的,而是要转换一个 td
元素节点,您可以使用该元素节点具有非空白文本子内容
<xsl:template match="td[text()[normalize-space()]]">
<para>
<xsl:apply-templates/>
</para>
</xsl:template>
是否额外需要 <xsl:template match="td[not(text()[normalize-space()])]"/>
或 <xsl:template match="td[not(text()[normalize-space()])]"><xsl:apply-templates/></xsl:template>
取决于您如何设置其余转换。