سؤال

لدي XSLT لقد خلق للتعامل مع معين مستند xml.ولكن الآن مساحات يجري إدخالها في بعض ، ولكن ليس كل ما لدينا من وثائق.أود أن استخدام نفس XSLT على هذه الوثائق ، ومع ذلك أواجه مشكلة في تعديل بلدي الأنماط أن تكون مساحة الملحد.

كان اقترح سابقا لتعديل بلدي مسارات xpath إلى *[local-name()="ElementName"], ومع ذلك وبالنظر لقد قدمت بالفعل الأنماط ، هذا هو عمل مكثفة جدا.

وبالإضافة إلى ذلك, أنا على علم أنني يمكن تعيين xpath-default-namespace إلى مساحة خاصة ، ولكن كما ذكرنا سابقا, لا أستطيع ببساطة تعيين كل أو قائمة الأسماء.أنا أبحث عن أكثر فعالية الحل تمديد مهام سكسونية المعالج المتاحة لي.أي أفكار ؟ شكرا

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

المحلول

هل تعتبر ما قبل تجهيز وثائق XML الخاصة بك؟

هل يمكن إزالة جميع النطاقات (يكون على بينة من اشتباكات محتملة) ومن ثم معالجته باستخدام تحويل XSL القائمة.

وهذا النهج سيكون له ميزة أنه لم يكن لديك لتعديل XSLT على الإطلاق. فإنه يبقى للقراءة (و* [اسم المحلي () 'frob' =] يبدو مروعا جدا) وللصيانة.

نصائح أخرى

وبعد إجراء مزيد من المشاورات، يبدو أن هناك ببساطة لا توجد طريقة سهلة للخروج من هذا. يجب إعادة تصميم XSLT أن يكون الملحد مساحة الاسم، أو استخدام السمة xpath-default-namespace على عنصر <xsl:stylesheet>. إذا كنا نريد الحفاظ على مساحة من الوثيقة واردة ولكن لا يزال لديهم عمل واحد مع أنماط بمساحات متعددة ثم سيكون لدينا قوالب تحتاج لتشبه النموذج التالي:

<xsl:template match="*[local-name(.)='ElementName']">
   <xsl:element name="{local-name(.)}" xmlns="http://yourURIhere">
      <xsl:value-of select="."/>
   </xsl:element>
</xsl:template/>

وغيرها.

ربما أنا لا أفهم مشكلتك, لكن لا عليك فقط القالب الخاص بك(ق) مباراة كل null-مساحة النسخة و على namespaced نسخة من العنصر ؟ - مثل هذا:

<xsl:template match="ElementName | NS:ElementName" xmlns:NS="your-namespace">
   ... output ...
</xsl:template>

(عادة إعلان NS البادئة سيتم وضعها على الأنماط عنصر)

هذا هو إلى حد بعيد الأكثر 'نظيفة' نسخة لي - لقد beeen باستخدام هذه واحدة XSLT العملية كل ثلاثة RSS صيغ (0.91, 1.0 & 2.0).

ولقد وجدت في الصفحة التالية لعرض المشكلة بشكل جيد، على الرغم من عدم إعطاء الحل:

http://www.edankert.com/defaultnamespaces.html

ولقد وجدت الحل لهذه المشكلة في أورايلي "XML في القشر":

http://docstore.mik.ua/orelly/xml/xmlnut/ ch08_10.htm

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