كيف يمكنني استبعاد العناصر مع XSI: nil = "صحيح" من التحول؟

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

  •  24-09-2019
  •  | 
  •  

سؤال

لقد حصلت على بعض ملفات XML التي تغيرت مؤخرًا بحيث تحتوي بعض العقد الآن على السمة XSI: nil = "True". لقد حصلت على ورقة نمط XSLT التي تجعل XML في HTML لبعض مقلة العين السريعة للبيانات. حاليًا لتسهيل الأمور على نفسي ، أخرج مساحات الأسماء من XML قبل تطبيق ورقة الأنماط. عملت بشكل جيد حتى التحديث الأخير لدينا. الآن أحصل على خطأ لأن XSL لا يعرف كيفية التعامل مع XSL: nil = "True".

يمكنني بسهولة تحديث الرمز حتى أقوم باستبدال/إزالة على جميع مطابقات XSL: nil = "true" في XML قبل أن أحوله ، لكنني كنت أتساءل عما إذا كان من الممكن أن أؤدي إلى صفية نمط XSLT بحيث XSI: سيتم تجاهل NIL/عدم التسبب في فشل التحول حتى لو لم تكن مساحات أسماء في XML. أفضل القيام بالأشياء بهذه الطريقة لأنه يمكنني إجراء التغيير على الخادم الآن ، حيث إذا اضطررت إلى إصدار بناء ويب جديد ، يجب أن أقفز من خلال بعض الأطواق الداخلية لنشره.

بعد أن أحصل على أشياء تعمل (إما من خلال إزالة XSL: NIL's قبل أو أثناء التحول) ، سأعود إلى الوراء وأكتشف سبب إزالة مساحات الأسماء في الأصل وأصلح ذلك.

شكرا على أي مساعدة يمكن أن تعطيني.

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

المحلول

لماذا قمت بإزالة مساحات الأسماء في المقام الأول؟ يتيح لك XSLT التحكم في البادئات التي يجب وضعها في الإخراج ، ويمكنك تخطيها xsi:nil جيد في ورقة الأنماط.

إذا لم يكن هناك إعلان بادئة مساحة الاسم ل xsi بادئة ، XML غير صالح. لذا ، فأنت تتعامل مع XML غير صالح أو لا يزال لديك بعض إعلان مساحة اسم XSI في مكان ما ، ويمكنك تغيير XSLT لتخطي هذه الإدخالات.

إذا قمت بإيجاد الإنتاج على مصدر XML ، فتأكد حقًا من إصلاحه لاحقًا (قريبًا!) ، لأن هذا النوع من الأشياء سوف يكسر رقبتك.

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