هل يستطيع XPath إجراء بحث عن المفتاح الخارجي عبر شجرتين فرعيتين من XML؟

StackOverflow https://stackoverflow.com/questions/142010

سؤال

لنفترض أن لدي XML التالي ...

<root>
  <base>
    <tent key="1" color="red"/>
    <tent key="2" color="yellow"/>
    <tent key="3" color="blue"/>
  </base>
  <bucket>
    <tent key="1"/>
    <tent key="3"/>
  </bucket>
</root>

...ما هو XPath الذي يُرجع أن "الدلو" يحتوي على "أحمر" و"أزرق"؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم XSLT، أنصحك بإعداد مفتاح:

<xsl:key name="tents" match="base/tent" use="@key" />

يمكنك بعد ذلك الحصول على <tent> داخل <base> مع معين key استخدام

key('tents', $id)

ثم يمكنك أن تفعل

key('tents', /root/bucket/tent/@key)/@color

أو إذا $bucket هو خاص <bucket> عنصر،

key('tents', $bucket/tent/@key)/@color

نصائح أخرى

أعتقد أن هذه ستنجح:

/root/base/tent[/root/bucket/tent/@key = @key ]/@color

إنه ليس جميلا.كما هو الحال مع أي بحث، تحتاج إلى استخدام الحالي ():

/root/bucket[/root/base/tent[@key = current()/tent/@key]/@color = 'blue' أو /root/base/tent[@key = current()/tent/@key ]/@اللون = 'أحمر']

لدى JeniT الاستجابة/الرمز المناسب المدرج هنا.تحتاج إلى إنشاء المفتاح قبل الانتقال إلى مستند XML، ثم إجراء المطابقات مع هذا المفتاح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top