باستخدام XLINK للإشارة إلى العقد في نفس المستند

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

  •  13-09-2019
  •  | 
  •  

سؤال

يبدو أن GIST العام من XLINK بسيط إلى عقدة أخرى في نفس المستند يبدو أنه:

<root xmlns:xlink="http://www.w3.org/1999/xlink">
  <firstChild id="ID1" />
  ...
  <ref xlink:href="#ID1" />
</root>

بدون استخدام XPointer أو XPath، هل هذا بقدر ما يمكنك القيام به مع Xlink؟ هل يمكن أن تفعل Xlink التي، قل، المشار إليها customId بدلا من ذلك، شيء يشبه:

<root xmlns:xlink="http://www.w3.org/1999/xlink">
  <firstChild id="ID1" customId="{1234-5678}" />
  ...
  <ref xlink:href="#customId/{1234-5678}" />
</root>

من فضلك لا تحيل لي فقط إلى W3 المواصفات - لا أعرف عنك، لكن الأمر يتطلب نوعا خاصا من الشخص لتتمكن من تفسيرها، وأنا لست هذا الشخص اليوم!

على أي حال، أفهم أن معظم XLink يبدو أن الإشارة إلى الموارد الخارجية، ومعظم الأمثلة التي رأيتها استخدم روابط HTTP لموارد الويب ... أنا فقط فضولي حول ما يمكنك القيام به مع XLINK من حيث الإشارة إلى جزء معين ضمن مستند XML.

شكرا!

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

المحلول

لا أعتقد أن هناك طريقة تعمل دون استخدام XPointer أو XPath. أعلم أنك لا تريد إحالة المواصفات، ولكن:

من Xlink المواصفات:

يتم تحديد تنسيق معرف الشظية [...] المستخدمة ضمن مرجع URI بواسطة مواصفات Xpointer.

من XPointer المواصفات:

يعتمد Xpointer [...] على لغة مسار XML (XPath)

لذلك أود أن أقول إنه شيء مثل:

<root xmlns:xlink="http://www.w3.org/1999/xlink">
  <firstChild id="ID1" customId="{1234-5678}" />
  ...
  <ref xlink:href="#xpointer(/root/firstChild[@customId = '{1234-5678}'])" />
</root>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top