فهرست سرفصل‌های XML
خانه (XML HOME) مقدمه (XML Introduction) نحوه استفاده (XML How to use) درخت (XML Tree) سینتکس (XML Syntax) عناصر (XML Elements) ویژگی ها (XML Attributes) فضاهای نام (XML Namespaces) نمایش (XML Display) XMLHttpRequest (XML HttpRequest) پارسر (XML Parser) DOM (XML DOM) XPath (XML XPath) XSLT (XML XSLT) XQuery (XML XQuery) XLink (XML XLink) اعتبارسنج (XML Validator) DTD (XML DTD) اسکیما (XML Schema) سرور (XML Server) مقدمه (AJAX Introduction) ساخت XMLHttpRequest (AJAX XMLHttp) ارسال درخواست (AJAX Request) پاسخ (AJAX Response) فایل XML (AJAX XML File) AJAX با PHP (AJAX PHP) AJAX با ASP (AJAX ASP) پایگاه داده (AJAX Database) اپلیکیشن ها (AJAX Applications) مثال ها (AJAX Examples) مقدمه (DOM Introduction) گره ها (DOM Nodes) دسترسی (DOM Accessing) اطلاعات گره (DOM Node Info) فهرست گره ها (DOM Node List) پیمایش (DOM Traversing) ناوبری (DOM Navigating) گرفتن مقادیر (DOM Get Values) تغییر گره ها (DOM Change Nodes) حذف گره ها (DOM Remove Nodes) جایگزینی گره ها (DOM Replace Nodes) ساخت گره ها (DOM Create Nodes) افزودن گره ها (DOM Add Nodes) کلون کردن گره ها (DOM Clone Nodes) مثال ها (DOM Examples) مقدمه (XPath Introduction) گره ها (XPath Nodes) سینتکس (XPath Syntax) محورها (XPath Axes) عملگرها (XPath Operators) مثال ها (XPath Examples) مقدمه (XSLT Introduction) زبان ها (XSL Languages) تبدیل (XSLT Transform) الگو (<template>) (XSLT <template>) value-of (<value-of>) (XSLT <value-of>) for-each (<for-each>) (XSLT <for-each>) مرتب سازی (XSLT <sort>) اگر (<if>) (XSLT <if>) انتخاب (XSLT <choose>) اعمال قالب ها (XSLT Apply) در سمت کلاینت (XSLT on the Client) در سمت سرور (XSLT on the Server) ویرایش XML (XSLT Edit XML) مثال ها (XSLT Examples) مقدمه (XQuery Introduction) مثال (XQuery Example) FLWOR (XQuery FLWOR) HTML (XQuery HTML) اصطلاحات (XQuery Terms) سینتکس (XQuery Syntax) افزودن (XQuery Add) انتخاب (XQuery Select) توابع (XQuery Functions) مقدمه (DTD Introduction) بلوک های سازنده (DTD Building Blocks) عناصر (DTD Elements) ویژگی ها (DTD Attributes) عناصر در برابر ویژگی ها (DTD Elements vs Attr) موجودیت ها (DTD Entities) مثال ها (DTD Examples) مقدمه (XSD Introduction) چگونه (XSD How To) برچسب <schema> (XSD <schema>) عناصر (XSD Elements) ویژگی ها (XSD Attributes) محدودیت ها (XSD Restrictions) عناصر پیچیده (XSD Complex Elements) خالی (XSD Empty) فقط عناصر (XSD Elements-only) فقط متن (XSD Text-only) ترکیبی (XSD Mixed) نشانگرها (XSD Indicators) <any> (XSD <any>) <anyAttribute> (XSD <anyAttribute>) جایگزینی (XSD Substitution) مثال (XSD Example) رشته (XSD String) تاریخ/زمان (XSD Date/Time) عددی (XSD Numeric) متفرقه (XSD Misc) مرجع (XSD Reference) سرویس ها (XML Services) WSDL (XML WSDL) SOAP (XML SOAP) RDF (XML RDF) RSS (XML RSS) مثال ها (XML Examples) آزمون (XML Quiz) سیلابس (XML Syllabus) برنامه مطالعه (XML Study Plan) گواهینامه (XML Certificate) انواع گره (DOM Node Types) گره (DOM Node) NodeList (DOM NodeList) NamedNodeMap (DOM NamedNodeMap) سند (DOM Document) عنصر (DOM Element) ویژگی (DOM Attribute) متن (DOM Text) CDATA (DOM CDATA) کامنت (DOM Comment) XMLHttpRequest (DOM XMLHttpRequest) پارسر (DOM Parser) المان ها (XSLT Elements) توابع (XSLT/XPath Functions)
نتیجه‌ای برای جستجو یافت نشد.
XML

XML — نشانگرها (XSD Indicators)

آخرین بروزرسانی: 1404/08/17

نشانگرها (XSD Indicators)

«نشانگر (Indicator)» در XSD قوانین استفاده از «عنصر (Element)» را مشخص می کند. با این قوانین، ترتیب، تعداد، و گروه بندی عناصر کنترل می شود.

دسته بندی نشانگرها

سه دسته داریم: ترتیب، تکرار، و گروه. ترتیب یعنی چگونگی چیدن فرزندها. تکرار یعنی کمینه و بیشینه رخداد. گروه یعنی بسته ای از عناصر یا ویژگی ها.

نشانگرهای ترتیب (Order)

all: هر ترتیبی، هر کدام یک بار

all یعنی همه فرزندها یک بار بیایند، اما ترتیب آزاد باشد.

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string" />
      <xs:element name="lastname" type="xs:string" />
    </xs:all>
  </xs:complexType>
</xs:element>

مشاهده در ادیتور

نکته: در all، فقط minOccurs برابر 0 یا 1 است. maxOccurs فقط 1 است.

choice: یکی از بین چندتا

choice یعنی فقط یکی از فرزندها مجاز است.

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee" />
      <xs:element name="member" type="member" />
    </xs:choice>
  </xs:complexType>
</xs:element>

مشاهده در ادیتور

sequence: ترتیب دقیق

sequence یعنی فرزندها دقیقاً با همان ترتیب بیایند.

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string" />
      <xs:element name="lastname" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

مشاهده در ادیتور

نشانگرهای تکرار (Occurrence)

Occurrence یعنی چند بار تکرار مجاز است. کمینه با minOccurs و بیشینه با maxOccurs کنترل می شود.

maxOccurs: سقف تکرار

maxOccurs بیشترین دفعات رخداد را تعیین می کند.

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string" />
      <xs:element name="child_name" type="xs:string" maxOccurs="10" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

مشاهده در ادیتور

اگر محدودیت نخواهی، مقدار را unbounded بگذار.

minOccurs: کف تکرار

minOccurs کمترین دفعات رخداد را مشخص می کند.

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string" />
      <xs:element name="child_name" type="xs:string"
        maxOccurs="10" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

مشاهده در ادیتور

نمونه کامل: XML و XSD

در این نمونه، person می تواند چند child_name داشته باشد.

<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="family.xsd">
  <person>
    <full_name>Hege Refsnes</full_name>
    <child_name>Cecilie</child_name>
  </person>
  <person>
    <full_name>Tove Refsnes</full_name>
    <child_name>Hege</child_name>
    <child_name>Stale</child_name>
    <child_name>Jim</child_name>
    <child_name>Borge</child_name>
  </person>
  <person>
    <full_name>Stale Refsnes</full_name>
  </person>
</persons>

مشاهده در ادیتور

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="persons">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="person" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="full_name" type="xs:string" />
              <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

مشاهده در ادیتور

نشانگرهای گروه (Group)

گروه ها بسته ای از عناصر یا ویژگی ها هستند. هدف، استفاده مجدد است.

گروهِ عنصر: group

ابتدا گروه را با sequence یا choice یا all تعریف می کنیم.

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string" />
    <xs:element name="lastname" type="xs:string" />
    <xs:element name="birthday" type="xs:date" />
  </xs:sequence>
</xs:group>

مشاهده در ادیتور

سپس گروه را با ref در نوع دیگر استفاده می کنیم.

<xs:element name="person" type="personinfo" />

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:group ref="persongroup" />
    <xs:element name="country" type="xs:string" />
  </xs:sequence>
</xs:complexType>

مشاهده در ادیتور

گروهِ ویژگی: attributeGroup

attributeGroup مجموعه ای از ویژگی هاست که قابل ارجاع است.

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string" />
  <xs:attribute name="lastname" type="xs:string" />
  <xs:attribute name="birthday" type="xs:date" />
</xs:attributeGroup>

مشاهده در ادیتور

<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup" />
  </xs:complexType>
</xs:element>

مشاهده در ادیتور

گام های تمرینی

  1. با sequence دو عنصر بساز.
  2. minOccurs را صفر بگذار.
  3. یک گروه عنصر بساز و ارجاع بده.

جمع بندی سریع

  • all ترتیب آزاد می دهد.
  • choice فقط یکی را می پذیرد.
  • sequence ترتیب را اجباری می کند.
  • minOccurs و maxOccurs تعداد را کنترل می کنند.
  • group و attributeGroup استفاده مجدد می دهند.

نشانگرهای XSD در محتوای ترکیبی هم کاربرد دارند.