هل يستطيع XPath إجراء بحث عن المفتاح الخارجي عبر شجرتين فرعيتين من XML؟
سؤال
لنفترض أن لدي 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، ثم إجراء المطابقات مع هذا المفتاح.
لا تنتمي إلى StackOverflow