XPath / XSLT选择所有兄弟姐妹,包括自我

石墨

我希望我的XSLT检查以检查是否所有<field>的panelTab中的表都是空的。如果它们都是空的,我希望它返回<p>All are empty</p>,但是如果它们不是空的,我希望panelTabs的内容都在字段之内,该字段<div id='tabItems'>与XML中的位置相同。请帮我。

XML:

<document>
 <contentTabs>
  <panelTabs text='a'>
   <row type='header'>
    <column>H1</column>
    <column>H2</column>
   </row>
   <row type='data'>
    <column>D1</column>
    <column>D2</column>
   </row>
  </panelTabs>
  <panelTabs text='b'>
   <field> </field>
   <field> </field>
  </panelTabs>
  <panelTabs text='c'>
   <field>x1</field>
   <field>x2</field>
  </panelTabs>
 <contentTabs>
</document>

当前的XSLT:

<xsl:template match='contentTabs'>
 <ul id='ulTabKopjes' class='tabKopjes'>
  <li onclick='verschuifTabs(this)'>&#60;</li>
   <xsl:call-template name='liHeaders' />
  <li onclick='verschuifTabs(this)'>&#62;</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" />

只尝试了XSLT,没有最后一个 <panelTabs>

想要的输出,例如:

<ul id='ulTabKopjes' class='tabKopjes'>
 <li onclick='verschuifTabs(this)'>&#60;</li>
 <li onclick='loadPanelTabContent(this)'>a</li>
 <li onclick='loadPanelTabContent(this)'>b</li>
 <li onclick='loadPanelTabContent(this)'>c</li>
 <li onclick='verschuifTabs(this)'>&#62;</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>
乔尔·M·拉姆森

试试这个样式表:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:strip-space elements="*"/>

    <xsl:output indent="yes" omit-xml-declaration="yes"/>

    <xsl:template match='contentTabs'>
        <ul id='ulTabKopjes' class='tabKopjes'>
            <li onclick='verschuifTabs(this)'>&#60;</li>
            <xsl:call-template name='liHeaders' />
            <li onclick='verschuifTabs(this)'>&#62;</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:choose>
                <xsl:when test="field and field = ''">
                    <p>All are empty</p>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates />
                </xsl:otherwise>
            </xsl:choose>
        </div> 
    </xsl:template>

    <xsl:template match="panelTabs/field[.!='']">
        <p><xsl:value-of select="." /></p>
    </xsl:template>

    <xsl:template match="panelTabs/row">
        <table>something</table>
    </xsl:template>

</xsl:stylesheet>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用XPath查找所有紧邻的兄弟姐妹

来自分类Dev

Xpath - 如何获取兄弟姐妹的所有现有属性名称

来自分类Dev

如何使用Selenium通过XPath选择兄弟姐妹的孩子?

来自分类Dev

xpath 选择以下 td 的兄弟姐妹,其中带有 alt 的内容图像

来自分类Dev

xsl / xpath最多选择兄弟姐妹,但不选择下一个类似的兄弟姐妹

来自分类Dev

xpath:先前的兄弟姐妹或自己

来自分类Dev

xpath:先前的兄弟姐妹或自己

来自分类Dev

在 XPath 中查找兄弟姐妹

来自分类Dev

选择除兄弟姐妹和自我之外的所有元素

来自分类Dev

选择两个节点之间的所有兄弟姐妹(不包括兄弟姐妹)

来自分类Dev

如何为以下具有匹配条件的兄弟姐妹创建 xpath

来自分类Dev

xpath之前的兄弟姐妹不起作用

来自分类Dev

XPath:查找孩子和兄弟姐妹中的首次出现

来自分类Dev

XPath:查找孩子和兄弟姐妹中的首次出现

来自分类Dev

如何为大孩子兄弟姐妹编写xpath

来自分类Dev

如何优雅地在xpath中找到多个兄弟姐妹

来自分类Dev

Xpath如何在没有唯一属性的两个兄弟姐妹之间查找元素

来自分类Dev

通过使用BeautifulSoup选择所有div兄弟姐妹

来自分类Dev

我如何获得所有兄弟姐妹的数据属性?

来自分类Dev

以下兄弟姐妹包含2个子元素时的XSL XPath帮助

来自分类Dev

C#中的Xpath:从xml“列表”中获取元素(兄弟姐妹)

来自分类Dev

如何使用Xpath根据其父级兄弟姐妹的孩子的文本查找元素

来自分类Dev

使用一个 xpath 表达式从兄弟姐妹中捕获文本

来自分类Dev

Xpath 在两个不同的 Cell 中使用兄弟姐妹或伙伴

来自分类Dev

xpath 查询以通过搜索值数组来获取其他兄弟姐妹

来自分类Dev

在xpath中选择评论的所有同级(包括文本)

来自分类Dev

在xpath中选择评论的所有同级(包括文本)

来自分类Dev

无法使用 position(), last(),[1] indexing([1]--eg.) 找到 xpath 以下:兄弟姐妹,孩子,父母没有任何工作

来自分类Dev

删除右侧的所有兄弟姐妹,但不删除左侧的所有兄弟姐妹

Related 相关文章

  1. 1

    如何使用XPath查找所有紧邻的兄弟姐妹

  2. 2

    Xpath - 如何获取兄弟姐妹的所有现有属性名称

  3. 3

    如何使用Selenium通过XPath选择兄弟姐妹的孩子?

  4. 4

    xpath 选择以下 td 的兄弟姐妹,其中带有 alt 的内容图像

  5. 5

    xsl / xpath最多选择兄弟姐妹,但不选择下一个类似的兄弟姐妹

  6. 6

    xpath:先前的兄弟姐妹或自己

  7. 7

    xpath:先前的兄弟姐妹或自己

  8. 8

    在 XPath 中查找兄弟姐妹

  9. 9

    选择除兄弟姐妹和自我之外的所有元素

  10. 10

    选择两个节点之间的所有兄弟姐妹(不包括兄弟姐妹)

  11. 11

    如何为以下具有匹配条件的兄弟姐妹创建 xpath

  12. 12

    xpath之前的兄弟姐妹不起作用

  13. 13

    XPath:查找孩子和兄弟姐妹中的首次出现

  14. 14

    XPath:查找孩子和兄弟姐妹中的首次出现

  15. 15

    如何为大孩子兄弟姐妹编写xpath

  16. 16

    如何优雅地在xpath中找到多个兄弟姐妹

  17. 17

    Xpath如何在没有唯一属性的两个兄弟姐妹之间查找元素

  18. 18

    通过使用BeautifulSoup选择所有div兄弟姐妹

  19. 19

    我如何获得所有兄弟姐妹的数据属性?

  20. 20

    以下兄弟姐妹包含2个子元素时的XSL XPath帮助

  21. 21

    C#中的Xpath:从xml“列表”中获取元素(兄弟姐妹)

  22. 22

    如何使用Xpath根据其父级兄弟姐妹的孩子的文本查找元素

  23. 23

    使用一个 xpath 表达式从兄弟姐妹中捕获文本

  24. 24

    Xpath 在两个不同的 Cell 中使用兄弟姐妹或伙伴

  25. 25

    xpath 查询以通过搜索值数组来获取其他兄弟姐妹

  26. 26

    在xpath中选择评论的所有同级(包括文本)

  27. 27

    在xpath中选择评论的所有同级(包括文本)

  28. 28

    无法使用 position(), last(),[1] indexing([1]--eg.) 找到 xpath 以下:兄弟姐妹,孩子,父母没有任何工作

  29. 29

    删除右侧的所有兄弟姐妹,但不删除左侧的所有兄弟姐妹

热门标签

归档