3

私は次のxmlを持っています:-

<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
  <assignment-record>
    <correspondent>
      <name>NORTH AMERICA INTERNATIONAL PATENT OFFIC</name>
      <address-1>P.O. BOX 506</address-1>
      <address-2>MERRIFIELD, VA 22116</address-2>
    </correspondent>
   </assignment-record>
  <patent-assignors>
    <patent-assignor>
      <name>TSAI, YU-WEN</name>
      <execution-date>
    <date>20050331</date>
      </execution-date>
    </patent-assignor>
    <patent-assignor>
      <name>HUANG, CHENG-I</name>
      <execution-date>
    <date>20050331</date>
      </execution-date>
    </patent-assignor>
  </patent-assignors>
  <patent-assignees>
    <patent-assignee>
      <name>FARADAY TECHNOLOGY CORP.</name>
      <address-1>NO.10-2, LI-HSIN ROAD 1, SCIENCE-BASED INDUSTRIAL PARK</address-1>
      <city>HSIN-CHU CITY</city>
      <country-name>TAIWAN</country-name>
    </patent-assignee>
  </patent-assignees>
 </patent-assignment>

次に、 patent-AssignorPatent -Assigneeの名前に範囲要素インデックスを作成します。しかし、Marklogic では、範囲インデックスに XPath を指定するオプションはありません。インデックス名を「名前」として使用します。では、 patent-AssignorPatent -Assigneeの名前に要素範囲インデックスを作成する適切な方法は何でしょうか?

4

3 に答える 3

3

cts:path-range-query()特許譲渡人および特許譲受人に使用できます

  1. cts:path-range-query("/patent-assignors/patent-assignor","=",$name)
  2. cts:path-range-query("/patent-assignees/patent-assignor","=",$name)
于 2015-03-04T10:40:18.343 に答える
2

Puneet さん、名前のセットを 1 つだけ取得するには、MarkLogic が何らかの方法でセットを区別できる必要があります。最善の策は、取り込み中に名前要素のローカル名 (現在は「名前」) または名前空間 (現在はなし) を変更することです。その後、element-range-index を作成し、cts:element-values() を使用できます。例えば:

<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
  <assignment-record>
    <correspondent>
      <name>NORTH AMERICA INTERNATIONAL PATENT OFFIC</name>
      <address-1>P.O. BOX 506</address-1>
      <address-2>MERRIFIELD, VA 22116</address-2>
    </correspondent>
  </assignment-record>
  <patent-assignors xmlns="http://puneet/assignors">
    <patent-assignor>
      <name>TSAI, YU-WEN</name>
      <execution-date>
        <date>20050331</date>
      </execution-date>
    </patent-assignor>
    <patent-assignor>
      <name>HUANG, CHENG-I</name>
      <execution-date>
        <date>20050331</date>
      </execution-date>
    </patent-assignor>
  </patent-assignors>
  <patent-assignees xmlns="http://puneet/assignees">
    <patent-assignee>
      <name>FARADAY TECHNOLOGY CORP.</name>
      <address-1>NO.10-2, LI-HSIN ROAD 1, SCIENCE-BASED INDUSTRIAL PARK</address-1>
      <city>HSIN-CHU CITY</city>
      <country-name>TAIWAN</country-name>
    </patent-assignee>
  </patent-assignees>
</patent-assignment>

この XML から、各「name」要素に範囲インデックスを作成してから、

cts:element-values(fn:QName("http://puneet/assignees", "name"))

担当者の名前を取得します。

于 2012-05-16T11:13:55.217 に答える
2

要素の親または先祖について心配する必要はありません。element-query でラップすることにより、祖先の element-range-query または element-value-query を制限できます。

cts:element-query(xs:QName("patent-assignor"), cts:element-value-query(xs:QName("name"), "my value"))

cts:element-query の最初のパラメーターとしてシーケンスを渡すことにより、単一の呼び出しで異なる祖先を持つ名前を検索できます。

cts:element-query((xs:QName("patent-assignor"), xs:QName("patent-assignee")), cts:element-value-query(xs:QName("name"), "my value"))

チッ!

于 2012-05-14T09:10:19.857 に答える