سؤال

ودون الخوض في الكثير من التفاصيل ونحن نتطلع إلى استخدام XML كما هو والبيانات الوصفية لوصف القيود على خصائص (وهذا مثال فغر ولم XSD لا يدعم دينا نموذج معقد المقترحة)، هناك نوعان من الخيارات التي يجري النظر فيها، والتي من وstrucutures XML التالية المنطقي أفضل؟

والخيار 1)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quanitity</name>
      <contraints>
         <contraint type="isRequired">
            <value>true</value>
         </contraint>
         <contraint type="regex">
            <value>^[0-9]$</value>
         </contraint>
         <contraint type="regex">
            <value>^[a-zA-Z]$</value>
         </contraint>
      </contraints>
   </Property>
</Properties>

والخيار 2)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quantity</name>
      <IsRequired>true</IsRequired>
      <Regex>^[0-9]$</Regex>
      <Regex>^[a-zA-Z]$</Regex>
   </Property>
</Properties>
هل كانت مفيدة؟

المحلول

وأنا ربما تذهب للخيار رقم 2 كما يفعل وظيفة XML بعمل أفضل لوصف البيانات (والذي هو بعد كل ما XML من المفترض أن تفعل)، وبالتالي هي أسهل في القراءة وأقل مطول. الخيار رقم 1 هو القليل من وثيقة إلى وجود علامات <name> و<value> تروق لي.

نصائح أخرى

لالمرونة، واود ان اذهب مع # 1. هذا سوف يسمح لك لإضافة العديد من أنواع مختلفة من القيود وقواعد العرف.

وذلك يعتمد على الطريقة التي تريد تحليل / العملية XML وإذا كنت تريد أن تكون قادرة على التحقق من صحة ذلك.

من وجهة نظر التحقق من صحة وجهة نظر (إذا كنت تفكر في التحقق من صحة التلقائي عن طريق XSD في وقت الترجمة) الخيار 2 هو الخيار الأفضل، ومحتوى العلامات سوف يكون لها نوع معين (على سبيل المثال، تعبير عادي)، في حين تعذر تسجيل العلامة <value> عن المحتوى الصحيح.

وأيضا، وأود أن تذهب على الأرجح مع الخيار 2 بشأن تحليل ومعالجة إذا كنت تستخدم محلل SAX، كما يمكن التبديل الدول على أساس العلامات.

وشخصيا، كنت اذهب مع أول واحد، وأظن أنه سيكون من الأسهل لكتابة التعليمات البرمجية لتحليل والقيام تدقيق الأخطاء في. بالإضافة إلى أنه أكثر منطقية غويا إلى ذهني.

وقال ذلك، أعتقد أنك سوف تجد انها "خيار شخصي"، إما على ما يرام.

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