当前位置: 首页 > 知识库问答 >
问题:

子节点具有属性且包含文本的节点的XPath

韩楷
2023-03-14

无法完成这项理论上相对简单的任务:

查找节点文档,其中Field具有包含特定文本的属性Name,并且子节点Option具有值。

XML:

<?xml version="1.0" encoding="utf-8"?>
<root>
...
    <Documents>
    <Document Id="35330">
        <Name>The Name 1</Name>
        <DocumentEdition>
            <Fields>            
                <Field Name="Børn-Andet Godt" FieldType="CheckBoxGroup">
                    <Option Name="Billedkunst"></Option>           
                </Field>
                <Field Name="Børn-Fritidsklub" FieldType="CheckBoxGroup">
                    <Option Name="Fritidshjem"></Option>
                    <Option Name="Fritidsklub"></Option>
                    <Option Name="Ungdomsklubber"></Option>
                </Field>
                <Field Name="Børn-Fritidsliv" FieldType="CheckBoxGroup">
                    <Option Name="Natur- og fritidsforeninger"></Option>
                    <Option Name="Rollespil"></Option>
                    <Option Name="Spejder">B-Spejder</Option>
                </Field>
            </Fields>
        </DocumentEdition>
    </Document>
        <Document Id="35332">
            <Name>The Name 2</Name>
            <DocumentEdition>
                <Fields>
                    <Field Name="Børn-Andet Godt" FieldType="CheckBoxGroup">
                        <Option Name="Billedkunst"></Option>
                    </Field>
                    <Field Name="Børn-Fritidsklub" FieldType="CheckBoxGroup">
                        <Option Name="Fritidshjem">Fritidshjem</Option>
                        <Option Name="Fritidsklub"></Option>
                        <Option Name="Ungdomsklubber"></Option>
                    </Field>
                    <Field Name="Børn-Fritidsliv" FieldType="CheckBoxGroup">
                        <Option Name="Natur- og fritidsforeninger"></Option>
                        <Option Name="Rollespil"></Option>
                        <Option Name="Spejder"></Option>
                    </Field>
                </Fields>
            </DocumentEdition>
        </Document>
    </Documents>
..
</root>

所以我希望能够将模板应用到文档中,比如

  <xsl:apply-templates select="//Document[/DocumentEdition/Fields/Field[contains(@Name,'Børn-Fritid')]/Option/text()&gt;'']"/>

但那是行不通的。

只需指定:文档必须在选项中包含文本,该选项是@Name包含特定文本的字段的子节点。

在xml中,使用输入值:

1:Børn Fridslip=

2: Børn-Fritidsklub=

3:Børn Fritid=

请给我指一下正确的方向。

共有1个答案

齐乐逸
2023-03-14

删除谓词中的前导斜杠,并检查是否有包含内容的选项,即更改

<xsl:apply-templates 
 select="//Document[/DocumentEdition/Fields/Field[contains(@Name,'Børn-Fritid')]/Option/text()&gt;'']"/>

<xsl:apply-templates 
 select="//Document[DocumentEdition/Fields/Field[contains(@Name,'Børn-Fritid') and Option[normalize-space()]]]"/>
 类似资料:
  • 问题内容: 我想使用XStream将对象序列化为这种形式的XML。 节点( 文本 )的值是序列化对象以及 att 属性上的字段。无需为此对象编写转换器就可以吗? 谢谢! 问题答案: 写一个转换器,应该类似于代码片段 在使用XStream时,注册转换器

  • 我有一个XML文档,它包含一个非常复杂(对我来说)的结构,没有换行符。它有许多具有类似结构的元素: 我需要得到节点值的文本,这是节点成员的孩子也有孩子的名字与特定的文本(在这种情况下virtual_size)。也有可能存在几个类似的节点。我可以用[1]etc吗? 这让我知道了节点的名称,但是如何达到“值”节点呢?

  • 我有一个SVG文档,其中包含类似于以下内容的节点: 我想做的只是选择

  • 我想用XStream将一个对象序列化为这种形式的XML。 在StackOverflow中已经有一个解决方案:XStream:node with attributes and text node?但它对我不起作用,因为我只能使用XStream1.3.1。

  • 我已经实现了一个TreeModel来调整存量数据模型,以便将其可视化为JTree。我遇到了一个问题,节点有多个相同的子(叶)节点。例如,考虑一个JTree,它的叶节点是Strings。每当父节点包含具有相同String值的子节点时,就会出现问题。这些叶节点的TreePath是相同的,作为Strings,equals()返回true。留档明确地调用这个: JTree及其相关类广泛使用TreePath

  • 问题内容: 我正在尝试读取xml文件,例如: 这是我到目前为止的代码: 这是我尝试编写此代码的尝试,怎么说都不成功,这就是我开始赏金的原因。这是http://pastebin.com/huKP4KED。 赏金更新: 我确实真的尝试了好几天,但现在没想到会这么难,我会接受有用的链接/书籍/教程,但更喜欢代码,因为我昨天需要这样做。 这是我需要的: 关于上面的xml: 我需要获取标题ID的值 temp