1

2 つの子ノードの値の存在によってノードを選択したいです。たとえば、objecttype ノードの値が 5 で、objectid ノードの値が 2 のノードを指定します。

objectid と objecttype の組み合わせは一意であるため、常に 1 つの結果が返されます。

XSL ステートメントとは何ですか?

<response>
    <result name="response" numFound="5" start="0">
        <doc>
            <str name="title">Tours</str>
            <int name="objecttype">5</int>
            <str name="friendlyurl">tours</str>
            <str name="avatar">2_156_DSC01511.JPG</str>
            <int name="objectid">2</int>
        </doc>
        <doc>
            <str name="title">Celebrations Car</str>
            <int name="objecttype">5</int>
            <str name="friendlyurl">celebrations-car</str>
            <str name="avatar">3_583_0509-0257-20x30-framed.jpg</str>
            <int name="objectid">3</int>
        </doc>
    </result>
</response>
4

2 に答える 2

3

と に検索条件がある$idとし$typeます。

文書が小さい場合:

/response/result/doc[int[@name='objectid']=$id and int[@name='objecttype']=$type]

何千もの<doc>要素がある場合:

<xsl:key name="lookup" match="doc"
         use="concat(int[@name='objectid'],'&#xd;',int[@name='objecttype'])"/>

...

  select="key('lookup',concat($id,'&#xd;',$type))"

これらは、XSLT 1.0 と XSLT 2.0 の両方で機能します。

于 2013-09-29T23:12:21.487 に答える