XSD – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
סקריפט החלפות (על ידי, תת-, סדרת)
הוספה על restriction
שורה 1: שורה 1:
{{הבהרת חשיבות עם זמן|זמן=10.02.2012}}
{{הבהרת חשיבות עם זמן|זמן=10.02.2012}}
'''XSD''' (נקרא גם '''XML Schema Definition''', מאנגלית: "הגדרת סכמה של XML") היא שפה המשמשת להגדרת [[סכמה (בסיס נתונים)|סכמה]] (מבנה) של מסמכים הכתובים בשפת [[XML]].{{כ}} XSD הוא [[תקן]] של ארגון [[W3C]]. בעזרת XSD ניתן לבדוק תקינות מבנה XML כתלות באילוצי יישום (Application Domain Constraints). התקן פותח על ידי חברת [[מיקרוסופט]] ואומץ בהמשך על ידי איגוד ה-[[W3C]]{{כ}}.
'''XSD''' (נקרא גם '''XML Schema Definition''', מאנגלית: "הגדרת סכמה של XML") הוא תקן המשמש להגדרת [[סכמה (בסיס נתונים)|סכמה]] (מבנה) של מסמכים הכתובים בשפת [[XML]].{{כ}} XSD הוא [[תקן]] של ארגון [[W3C]]. בעזרת XSD ניתן לבדוק תקינות מבנה XML כתלות באילוצי יישום (Application Domain Constraints). התקן פותח על ידי חברת [[מיקרוסופט]] ואומץ בהמשך על ידי איגוד ה-[[W3C]]{{כ}}.

XSD מוסיף מנגנוני Typing ו-Facets אשר לא נתמכים בפורמט [[DTD]]. שימוש נפוץ כיום ל-XSD ניתן למצוא במנגנון ה Typing של [[WSDL]] המייבא XSD באמצעות טכנולוגיית ה [[XML Namespaces]].
XSD מוסיף מנגנוני Typing ו-Facets אשר לא נתמכים בפורמט [[DTD]]. שימוש נפוץ כיום ל-XSD ניתן למצוא במנגנון ה Typing של [[WSDL]] המייבא XSD באמצעות טכנולוגיית ה [[XML Namespaces]].


ב-XSD קיימים שני סוגי יסודות עיקריים, יסוד אטומי (Simple Element) ויסוד מורכב (Complex Element). יסוד אטומי מורכב אך ורק מאוסף של תכונות (attributes) , בעוד שיסוד מורכב יכול להיות רצף של אובייקטים שונים.
ב-XSD קיימים שני סוגי יסודות עיקריים, יסוד אטומי (Simple Element) ויסוד מורכב (Complex Element). יסוד אטומי מורכב אך ורק מאוסף של תכונות (attributes) , בעוד שיסוד מורכב יכול להיות רצף של אובייקטים שונים.

== תלות באילוצי יישום ==

XSD מאפשר לבדוק שהתגיות (או תוכנם) הינם מטיפוס מסויים (ראה מערכת טיפוסים) או בעל מגבלות מסויימות (ראה restriction)


==דוגמה==
==דוגמה==
שורה 139: שורה 142:
</source>
</source>
יש למלא את כל האלמנטים שהיו בטיפוס אותו יורשים
יש למלא את כל האלמנטים שהיו בטיפוס אותו יורשים
=== שימוש ב restriction ===

הגבלה מאפשרת יצרת חוקים עבור מרחב הערכים אותם תגית מסויימת יכולה לקבל ע"י שיומש ב:
whiteSpace,enumeration ,pattern, fractionDigits,maxExclusive,maxInclusive,length,minExclusive,minInclusive,maxLength ,minLength ,totalDigits


=== extension ===
=== extension ===

גרסה מ־12:27, 12 בפברואר 2012

אנו דנים כעת בשאלה האם ערך זה עומד בקריטריונים להיכלל בוויקיפדיה. אתם מוזמנים לשפר ולהרחיב את הערך על מנת להסיר את הספקות, וכן להשתתף בדיון בדף השיחה של הערך.
הדיון אורך שבוע, וניתנת בו הזדמנות להביע תמיכה מנומקת בהשארת הערך. הערך יימחק בתום שבוע ימים, אלא אם כן הובעה תמיכה שכזו בידי עורך או עורכת בעלי זכות הצבעה מלבד יוצר או יוצרת הערך. (התבנית הוצבה בתאריך 10.02.2012).
אנו דנים כעת בשאלה האם ערך זה עומד בקריטריונים להיכלל בוויקיפדיה. אתם מוזמנים לשפר ולהרחיב את הערך על מנת להסיר את הספקות, וכן להשתתף בדיון בדף השיחה של הערך.
הדיון אורך שבוע, וניתנת בו הזדמנות להביע תמיכה מנומקת בהשארת הערך. הערך יימחק בתום שבוע ימים, אלא אם כן הובעה תמיכה שכזו בידי עורך או עורכת בעלי זכות הצבעה מלבד יוצר או יוצרת הערך. (התבנית הוצבה בתאריך 10.02.2012).

XSD (נקרא גם XML Schema Definition, מאנגלית: "הגדרת סכמה של XML") הוא תקן המשמש להגדרת סכמה (מבנה) של מסמכים הכתובים בשפת XML.‏ XSD הוא תקן של ארגון W3C. בעזרת XSD ניתן לבדוק תקינות מבנה XML כתלות באילוצי יישום (Application Domain Constraints). התקן פותח על ידי חברת מיקרוסופט ואומץ בהמשך על ידי איגוד ה-W3C‏. XSD מוסיף מנגנוני Typing ו-Facets אשר לא נתמכים בפורמט DTD. שימוש נפוץ כיום ל-XSD ניתן למצוא במנגנון ה Typing של WSDL המייבא XSD באמצעות טכנולוגיית ה XML Namespaces.

ב-XSD קיימים שני סוגי יסודות עיקריים, יסוד אטומי (Simple Element) ויסוד מורכב (Complex Element). יסוד אטומי מורכב אך ורק מאוסף של תכונות (attributes) , בעוד שיסוד מורכב יכול להיות רצף של אובייקטים שונים.

תלות באילוצי יישום

XSD מאפשר לבדוק שהתגיות (או תוכנם) הינם מטיפוס מסויים (ראה מערכת טיפוסים) או בעל מגבלות מסויימות (ראה restriction)

דוגמה

להלן דוגמה לסכמת XSD בסיסית להגדרה של מדינה.

<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="country" type="Country"/>
 <xs:complexType name="Country">
 <xs:sequence>
 <xs:element name="name" type="xs:string"/>
 <xs:element name="population" type="xs:decimal"/>
 </xs:sequence>
 </xs:complexType>
</xs:schema>

דוגמה לקובץ XML שמוגדר על פי הסכמה מובאת להלן: (כשההנחה היא ששם הקובץ של סכמת ה-XSD הוא "country.xsd")‏.

<country
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="country.xsd">
 <name>France</name>
 <population>60,144,000</population>
</country>

מערכת טיפוסים

xsd:anyType

טיפוס xsd:anyType מהווה בסיס לכל הטיפוסים המוגדרים בסכמה. במערכות שמאפשרות שימוש ב xsd:anyType הטיפוס ממופה לטיפוס בסיס בשפות המאפשרות זאת (Object ב Java) ולטיפוס הפשוט ביותר שניתן לשימוש (void * עבור C ו C++).

sequence

אלמנט המאפשר יצרת מופעים נוספים של תת-אלמנטים בסדרת מופעים כאשר יש לפחות מופע אחד יכול להיות מוכל ב group, choice, sequence, complexType, או בהורשת טיפוסי נתונים.

תג squence מאפשר יצרת מערכים פתרון לרשימות מקושרות על ידי יצרת שימוש בתגיות:

  • maxOccurs= מספר שלם חיובי או unbounded (כמות הופעות לפי מספר שלם או כל מספר)
  • minOccurs=מספר שלם חיובי

מערך סטטי (גודל ידוע בזמן יצרת ה XML) ייצוג על ידי הגדרת macOccurs למספר שלם חיובי.

רשימה תיוצג על ידי שימוש בהגדרה unbound עבור כמות מקסימלית של הופעות.

simpleType

simpleType תיאור מבנה נתונים בXML המתאר טיפוסים שהינם מוגדרים מראש או טיפוסים שהוגדרו על ידי משתמש. simpleType לא יכול להכיל attribure ולא יכול להכיל תת-אלמנטים. ניתן להגדיר טיפסים נוספים.

מוגדר תחת תקן w3C [XML-SCHEMA http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#rf-defn]

ערכים מובנים ברמת הסכמה

  • string
  • boolean
  • decimal
  • float
  • double
  • duration
  • dateTime
  • time
  • date
  • gYearMonth
  • gYear
  • gMonthDay
  • gDay
  • gMonth
  • hexBinary
  • base64Binary
  • anyURI
  • QName
  • NOTATION
  • enum

יצרת טיפוסים חדשים

ניתן ליצור טיפוס חדש כאשר הוא יהווה שם חדש לדוגמה :

<simpleType name="nice_atricale">
 <restriction base="xsd:string">
 </restriction>
 </simpleType>

מתבצעת פה הורשה מהטיפוס מחרוזות ויצרת טיפוס נתונים חדש.

complexType

complexType הוא טיפוס של נתוני XML. הנתונים יכולים להכיל:

  • אוסף של simpleTypes
  • תת-אלמנטים (nodes)
  • מצביעים

סוגי complexType

  • ריקים (ללא תוכן או attributes)
  • המכילים רק אלמנטים אחרים בתוכם (צורת עץ).
  • מכיל רק טקסט
  • המכילים טקסט ואלמנטים אחרים.

דוגמה

 <complexType name="wikipedia">
 <sequence>
 <element name="authers" type="xs:integer" minOccurs="0"/>
 <element name="readers" type="xs:integer" minOccurs="0"/>
 <element name="languages" minOccurs="0" maxOccurs="1/>
 </sequence>
 </complexType>

הורשת טיפוסי נתונים

ב XML הורשה מתבצעת באמצעות restriction או extension

restriction

בדוגמה זו מקטינים את כמות המופעים של אלמנט languages

<complexType name="restricted_wikipedia">
 <complexContent>
 <restriction base="n:wikipedia">
 <sequence>
 ...
 <element name="languages" maxOccurs="3"/>
 </sequence>
 </restriction>
 </complexContent>
</complexType>

יש למלא את כל האלמנטים שהיו בטיפוס אותו יורשים

שימוש ב restriction

הגבלה מאפשרת יצרת חוקים עבור מרחב הערכים אותם תגית מסויימת יכולה לקבל ע"י שיומש ב: whiteSpace,enumeration ,pattern, fractionDigits,maxExclusive,maxInclusive,length,minExclusive,minInclusive,maxLength ,minLength ,totalDigits

extension

הוספת אלמנטים לטיפוס האב (דומה להורשה שקיימת בתכנות מונחה עצמים).

<complexType name="ext_wikipedia">
 <complexContent>
 <extension base="n:wikipedia">
 <sequence>
 <element name="languages" minOccurs="3" maxOccurs="4"/>
 </sequence>
 </extension>
 </complexContent>
</complexType>

Subsumption (פולימורפיזם) )

ניתן לקבל רב צורתיות ב XML על ידי שימוש בטיפוס אותו אנו יורשים בהגדרה אנו מייצרים אלמנט שיכול להיות מטיפוס ext_wikipedia או מטיפוס wikipedia

<element name="my_home_wiki" type="ext_wikipedia"/>

מניעת הורשה

על מנת למנוע הורשה ניתן האפשרות להשתמש ב:

  • מניעת הורשה "final="restriction
  • מניעת שימוש ב subsumption הוספת "block="#all
  • קבלת טיפוס שאוסר שימוש באלמנטים abstract="true" (מקבילה ל abstract class ב java)

קישורים חיצוניים

ערך זה הוא קצרמר בנושא מחשבים. אתם מוזמנים לתרום לוויקיפדיה ולהרחיב אותו.