سؤال

أعلم أنني فعلت هذا من قبل ، لكنه لا يعمل اليوم ، ولا يمكنني أن أجد أي مكان يفسر كيفية القيام بذلك. يمكن أن يكون قلة النوم ، لكني أظن أن Gremlins.

لدي وثيقة XML ودليل مليء بـ XSD الذي يحدده. كيف يمكنني تعيين IDE المرئي لإعلامي بفشل التحقق من الصحة ، ثم تقديم قائمة Intellisense من العلامات والسمات الصحيحة في سياق معين؟

ما جربته:

  • لقد أضفت XSD's إلى المشروع باستخدام مستند XML.
  • لقد أضفت XSD's إلى قائمة مخطط XML (ضمن XML / Schemas ... عنصر القائمة.)
  • لقد قمت حتى بتضمين سمات Schemalocation و NonamespacesChemalocation إلى مستند XML.

لا يزال Visual Studio لا يتخلى عن أي معلومات تصحيح أو تحرير مفيدة. حاولت كل من 2010 و 2008 (لقد فعلت ذلك من قبل في عام 2008 فكرت)

تحديث: كان لدي مطور آخر جرب هذا وفشل بالنسبة له أيضًا. إنه يعلم أنه فعل ذلك مع وثائق XML الأخرى وكان يعمل. قمت بعد ذلك بتنزيل محرر Oxygen XML وعمل بشكل جيد على نفس ملفات XML و XSD ، لذلك يبدو أن الملفات جيدة (أو الأكسجين أكثر تسامحًا / مرونة..).

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

المحلول

ستحتاج إلى ربط مستند XML في Visual Studio مع ملف XSD لديك.

  1. يجب أن ترى شيئًا كهذا في نافذة الخصائص الخاصة بك لمستند XML:

    XML Properties  loading= Schema">

  2. في محرر مجموعة مخطط XML (يفتح عند النقر فوق (...) Ellipsis في مربع النص "Schemas" في نافذة الخصائص الخاصة بك) ، تحتاج إلى التأكد من وجود مخططك. أيضا ، تأكد من Use يتم تمكين العمود لهذا المخطط - إن لم يكن ، انقر فوقه - ستحصل على قائمة منسقات من الخيارات ، اختر Use واحد مع علامة الاختيار الأخضر:

    XML Schema Selector

  3. تأكد من وجود Windows في قائمة أخطاء Visual Studio (عرض القائمة> قائمة الأخطاء). سيظهر هذا كل التناقضات بين تعريفات مخطط XML و XSD.

  4. بمجرد أن يكون كل ذلك في مكانه ، يجب على محرر Visual Studio XML الضوء على المشكلات مع XML في المحرر باستخدام Blue Squigglies:

    Example of Error

نصائح أخرى

لا تحتاج إلى ربط الملفات يدويًا في Visual Studio - سيفعل ذلك تلقائيا قم بمطابقة ملف XML مع ملف XSD إذا كان لديك كل منهما مفتوحًا ، وكان لديك مساحة الاسم المحددة بشكل صحيح.

لتحديد مساحة الاسم:

في عنصر جذر ملف XML:

<Data xmlns='http://yourdomain.com/yourschema.xsd'>
    ...
</Data>

في عنصر مخطط ملف XSD:

<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://yourdomain.com/yourschema.xsd"
    xmlns:this="http://yourdomain.com/yourschema.xsd"
    elementFormDefault="qualified">
    ...
</xs:schema>

ملاحظة حول استخدام الأنواع في المخطط الخاص بك عندما يكون لديك مساحة أسماء الهدف

لأنك تحدد أ targetNamespace في المخطط الخاص بك ، ستحتاج أي إشارات إلى الأنواع المحددة في المخطط إلى أن تكون مرفوعة بمساحة اسم (وهذا هو السبب في أننا أضفنا xmlns:this السمة في ما سبق <xs:schema /> عنصر).

<!-- Define the type as normal -->
<xs:complexType name="Row">
    <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="Value" type="xs:float" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
</xs:complexType>
<!-- Use the type (note the "this:" prefix) -->
<xs:element name="Row" type="this:Row" minOccurs="0" maxOccurs="unbounded" />

نقطة أخرى من الفشل هنا هي ملفات مخطط Windows 7 "حظر" ... انقر بزر الماوس الأيمن على ملف XSD على القرص ، والخصائص> عام ، وإذا تم حظره ، سيكون لديك زر "إلغاء الحظر". كان هذا يتسبب في فشل التحقق من صحة XML في VS2012.

هل يحتوي XSD الخاص بك على سمة "targetNamespace" /schema/@targetNamespace هذا يشبه مساحة الاسم التي تشير إليها في XML؟

أمثلة:

XSD:

<xs:schema .... targetNamespace="Datafile.xsd" ... >

XML:

<data xmlns="Datafile.xsd" >...</data>

أنظر أيضا: XML/XSD Intellisense لا يعمل في Visual Studio 2010

واجهت هذه المشكلة نفسها ، لكن VS كان يشير إلى مخططي بشكل صحيح بالفعل. تبين أن الملف الذي كنت أحاول التحقق منه لم يكن لديه ملحق ملف "XML". تمت إضافة .xml إلى نهاية اسم الملف ، وبدأ التحقق من الصحة في العمل.

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