【问题标题】:Retrieving sub-element attribute's value based on uniq-key with xslt ant使用 xslt ant 基于唯一键检索子元素属性值
【发布时间】:2013-09-27 10:12:07
【问题描述】:

我的 xml 看起来像这样:

<someRoot
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../my.xsd">

    <position name="quality">

        <db>
            <server name="blah-blah" type="xyz"/>
        </db>

        <some-more-element value="12345"/>

        <my-needy-element>
            <my-needy-sub-element name="uk1"
                  value="a,b,c"
                  more-attr="some-val"/>
            <my-needy-sub-element name="uk2"
                          value="x,b,y,c"
                  more-attr="some-diff-val"/>
         </my-needy-element>

       </position>
</someRoot> 

在我执行xmlproperty & samy 类似:${db.server(name)} 之后,检索说我的单个 db-server 名称有效。现在我正在尝试检索子元素的值 - 但它总是 给我所有匹配它的行值。例如: ${my-needy-element.my-needy-sub-element(more-attr)} 将打印 some-val,some-diff-val 。如何获得属性值匹配 到特定的唯一名称,例如 {my-needy-element.my-needy-sub-element(more-attr) with name="uk1"}

添加编辑评论:即使我使用 xslt ant-task 通过传递 'uk1' 并获取所需的子元素属性值,有什么办法吗?使用 xsl:if 或键匹配

修改更多:

已尝试使用 xsl 和 xslt ant ,但它似乎没有给出我想要的:

<xsl:template match="/someRoot/my-needy-element/my-needy-sub-element">

        <someRoot>
                <xsl:key name="my-needy-sub-element" match="text()" use="@name"/>
            <xsl:apply-templates select="key('name',$xslParamPassed)"/>
        </someRoot>
    </xsl:template>

谢谢,

【问题讨论】:

    标签: xslt ant


    【解决方案1】:

    您无法使用 xmlproperty 执行此操作,但您可以考虑使用第三方 xmltask,它允许您使用成熟的 XPath 表达式:

    <xmltask source="file.xml">
      <copy path="/someRoot/position/my-needy-element/my-needy-sub-element[@name='uk1']/@more-attr"
            property="more.attr" />
    </xmltask>
    <echo>${more.attr}</echo>
    

    【讨论】:

    • 感谢您。但是,即使我通过传递 'uk1' 并获取所需的子元素属性值来使用 xslt ant-task,有什么办法吗?。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多