Xml XPath/XSLT选择所有同级,包括self
我希望我的XSLT检查检查随机面板选项卡中的所有Xml XPath/XSLT选择所有同级,包括self,xml,xslt,xpath,nodes,axes,Xml,Xslt,Xpath,Nodes,Axes,我希望我的XSLT检查检查随机面板选项卡中的所有是否为空。如果它们都是空的,我希望它返回所有都是空的,但是如果它们不是空的,我希望面板选项卡的内容和字段位于中,即与XML中位置相同的内容。请帮帮我。 XML: H1 氢 D1 D2 x1 x2 当前XSLT: <xsl:template match='contentTabs'> <ul id='ulTabKopjes' class='tabKopjes'> <li onclick='verschuifTab
是否为空。如果它们都是空的,我希望它返回所有都是空的
,但是如果它们不是空的,我希望面板选项卡的内容和字段位于
中,即与XML中位置相同的内容。请帮帮我。XML:
H1
氢
D1
D2
x1
x2
当前XSLT:
<xsl:template match='contentTabs'>
<ul id='ulTabKopjes' class='tabKopjes'>
<li onclick='verschuifTabs(this)'><</li>
<xsl:call-template name='liHeaders' />
<li onclick='verschuifTabs(this)'>></li>
</ul>
<div class='tabContent'>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template name='liHeaders'>
<xsl:for-each select='panelTabs'>
<li onclick='loadPanelTabContent(this)'>
<xsl:value-of select="@text" />
</li>
</xsl:for-each>
</xsl:template>
<xsl:template match="panelTabs">
<div class="tabItems">
<xsl:attribute name="id">
<xsl:text>tabnr</xsl:text><xsl:value-of select="position()" />
</xsl:attribute>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template match="panelTabs[not(field[normalize-space()])]">
<p>All are empty</p>
</xsl:template>
<xsl:template match="panelTabs/field">
<p><xsl:value-of select="." /></p>
</xsl:template>
<xsl:template match="panelTabs/field[not(normalize-space())]" priority="2" />
- &62李>
塔布纳
都是空的
仅在没有最后一个
想要输出,比如:
<ul id='ulTabKopjes' class='tabKopjes'>
<li onclick='verschuifTabs(this)'><</li>
<li onclick='loadPanelTabContent(this)'>a</li>
<li onclick='loadPanelTabContent(this)'>b</li>
<li onclick='loadPanelTabContent(this)'>c</li>
<li onclick='verschuifTabs(this)'>></li>
</ul>
<div id='tabContent'>
<div class='tabItems' id='tabnr1'>
<table>something</table>
</div>
<div class='tabItems' id='tabnr2'>
<p>All fields are empty</p>
</div>
<div class='tabItems' id='tabnr3'>
<p>x1</p>
<p>x2</p>
</div>
</div>
- a
- b
- c
- &62李>
塔布纳
都是空的
某物
您可以使用以下命令。
请注意,您的输出不是格式良好的XML。如果希望它格式良好,请添加根元素
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match='contentTabs'>
<ul id='ulTabKopjes' class='tabKopjes'>
<li onclick='verschuifTabs(this)'><</li>
<xsl:call-template name='liHeaders' />
<li onclick='verschuifTabs(this)'>></li>
</ul>
<div class='tabContent'>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template name='liHeaders'>
<xsl:for-each select='panelTabs'>
<li onclick='loadPanelTabContent(this)'>
<xsl:value-of select="@text" />
</li>
</xsl:for-each>
</xsl:template>
<xsl:template match="panelTabs">
<div class="tabItems">
<xsl:attribute name="id">
<xsl:text>tabnr</xsl:text>
<xsl:value-of select="position()" />
</xsl:attribute>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template match="panelTabs[field[normalize-space() = '']]">
<div class="tabItems">
<p>All fields are empty</p>
</div>
</xsl:template>
<xsl:template match="panelTabs[not(field)]">
<div class="tabItems">
<table>something</table>
</div>
</xsl:template>
<xsl:template match="panelTabs/field">
<p>
<xsl:value-of select="." />
</p>
</xsl:template>
</xsl:stylesheet>
- &62李>
塔布纳
所有字段都是空的
某物
你能添加一个panelTab
,其中字段有一些值,并显示预期的输出吗?@LingamurthyCS我编辑了XML,希望我的帖子能够输出。这似乎可行,唯一的问题是所有panelTab的所有内容(除了有空字段的内容)都打印了两次。NVM,我修复了这个问题,这是另一个问题。很好用,非常感谢!当存在数量可变的空字段时,是否有一种简单的方法来实现这一点?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match='contentTabs'>
<ul id='ulTabKopjes' class='tabKopjes'>
<li onclick='verschuifTabs(this)'><</li>
<xsl:call-template name='liHeaders' />
<li onclick='verschuifTabs(this)'>></li>
</ul>
<div class='tabContent'>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template name='liHeaders'>
<xsl:for-each select='panelTabs'>
<li onclick='loadPanelTabContent(this)'>
<xsl:value-of select="@text" />
</li>
</xsl:for-each>
</xsl:template>
<xsl:template match="panelTabs">
<div class="tabItems">
<xsl:attribute name="id">
<xsl:text>tabnr</xsl:text>
<xsl:value-of select="position()" />
</xsl:attribute>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template match="panelTabs[field[normalize-space() = '']]">
<div class="tabItems">
<p>All fields are empty</p>
</div>
</xsl:template>
<xsl:template match="panelTabs[not(field)]">
<div class="tabItems">
<table>something</table>
</div>
</xsl:template>
<xsl:template match="panelTabs/field">
<p>
<xsl:value-of select="." />
</p>
</xsl:template>
</xsl:stylesheet>