1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886
|
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:mi="http://fedoraproject.org/metadata/moduleindex"
targetNamespace="http://fedoraproject.org/metadata/moduleindex"
elementFormDefault="qualified">
<annotation>
<documentation xml:lang="en">
XML serialization for modular metadata
<https://docs.fedoraproject.org/en-US/modularity/> stored in
YUM repositories and interpreted by RPM package managers.
</documentation>
</annotation>
<simpleType name="identifierOrEmpty">
<annotation>
<documentation xml:lang="en">
A user-visible, non-empty string used as a name for a module,
a stream, or a profile.
An empty value means unsetting that relation (e.g. unsetting a
default stream).
</documentation>
</annotation>
<restriction base="string">
<pattern value="[a-zA-Z0-9+._-]*"/>
<maxLength value="255"/>
</restriction>
</simpleType>
<simpleType name="identifier">
<annotation>
<documentation xml:lang="en">
A user-visible, non-empty string used as a name for a module,
a stream, and an architecture.
</documentation>
</annotation>
<restriction base="mi:identifierOrEmpty">
<minLength value="1"/>
</restriction>
</simpleType>
<simpleType name="singleLine">
<annotation>
<documentation xml:lang="en">
A string without line-feed, carriage-return, and tab characters.
Intended for short, user visible texts. Empty value is possible.
</documentation>
</annotation>
<restriction base="string">
<pattern value="[^\t\r\n]*"/>
</restriction>
</simpleType>
<simpleType name="multiLine">
<annotation>
<documentation xml:lang="en">
A possibly long, multi-line text. End of lines are
encoded as line-feeds (U+000A). Empty value is possible.
</documentation>
</annotation>
<restriction base="string"/>
</simpleType>
<simpleType name="license">
<annotation>
<documentation xml:lang="en">
A non-empty license expression. An exact syntax and semantics
depends on the targetted distribution. E.g. Fedora and derived
distributions follow
<https://docs.fedoraproject.org/en-US/legal/license-field/>.
</documentation>
</annotation>
<restriction base="mi:singleLine">
<minLength value="1"/>
</restriction>
</simpleType>
<simpleType name="packageName">
<annotation>
<documentation xml:lang="en">
An RPM package name. A non-empty string accepted by rpm tool
as a package name. A value with ".." substring is forbiden.
</documentation>
</annotation>
<restriction base="string">
<pattern value="[a-zA-Z0-9_%][a-zA-Z0-9._+%{}-]*"/>
<maxLength value="255"/>
</restriction>
</simpleType>
<simpleType name="rpmVersion">
<annotation>
<documentation xml:lang="en">
An RPM version string. A non-empty string accepted by rpm tool
as a package version or a package release. A value with ".."
substring is forbiden.
</documentation>
</annotation>
<restriction base="string">
<pattern value="[a-zA-Z0-9._+%{}~^]{1,}"/>
<maxLength value="255"/>
</restriction>
</simpleType>
<simpleType name="rpmArch">
<annotation>
<documentation xml:lang="en">
An RPM and module architecture string. A non-empty string
accepted by rpm as an architecture.
</documentation>
</annotation>
<restriction base="mi:identifier"/>
</simpleType>
<simpleType name="contextOrEmptyType">
<annotation>
<documentation xml:lang="en">
A context identifier of a module. A context distinguishes
flavours of stream. The flavours usually differ by module
dependencies. It can be used for building the same piece of
software against different versions of a library or a
programming language. Or simply for different releases of a
distribution.
An empty value means no context, not specific to a context.
</documentation>
</annotation>
<restriction base="string">
<minLength value="0"/>
<maxLength value="13"/>
<pattern value="[a-zA-Z0-9_]*"/>
</restriction>
</simpleType>
<simpleType name="contextType">
<annotation>
<documentation xml:lang="en">
A context identifier of a module. A context distinguishes
flavours of stream. The flavours usually differ by module
dependencies. It can be used for building the same piece of
software against different versions of a library or a
programming language. Or simply for different releases of a
distribution.
</documentation>
</annotation>
<restriction base="mi:contextOrEmptyType">
<minLength value="1"/>
</restriction>
</simpleType>
<simpleType name="timestamp">
<annotation>
<documentation xml:lang="en">
A timestamp expressed as a number of seconds since the
beginning of Unix epoch.
</documentation>
</annotation>
<restriction base="unsignedLong"/>
</simpleType>
<simpleType name="localeName">
<annotation>
<documentation xml:lang="en">
An identifier of a locale according to GNU libc.
I.e. a 2-letter (or 3-letter if 2-letter code is not
available) ISO 639 language code, optionally followed by
an underscore and a 2-letter ISO 3166 country code, optionally
followed by a commercial at and a modifier (variant) code.
E.g. "sr", "sr_RS", "sr@latin", or "sr_RS@latin".
(A codeset character set is not used here because it's
implicit from the XML character set.) See setlocale(3)
manual and gettexts info pages.
To ensure a canonical form, here the language code must be
lower-cased, the country code upper-cased and the modifier
code lower-cased.
</documentation>
</annotation>
<restriction base="string">
<pattern value="[a-z]{2,3}(_[A-Z]{2})?(@[a-z]+)?"/>
</restriction>
</simpleType>
<complexType name="dependencyType">
<annotation>
<documentation xml:lang="en">
A dependency on another module.
</documentation>
</annotation>
<sequence>
<element name="requires" type="mi:identifier" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
A stream of the module which also must be enabled by
the package manager. If this element exists multiple
times, any of these streams satisfy. It this element
does not exist, any stream satisfies.
</documentation>
</annotation>
</element>
<element name="conflicts" type="mi:identifierOrEmpty" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
A stream of the module which must not be enabled by
the package manager. If this element exists multiple
times, none of these streams must be enabled. It this
element is empty, no stream of the module must be
enabled. If a stream is defined to conflict and to be
required at the same time, the stream will conflict.
</documentation>
</annotation>
</element>
</sequence>
<attribute name="name" type="mi:identifier" use="required">
<annotation>
<documentation xml:lang="en">
A name of the module this build depends on.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="licenseType">
<annotation>
<documentation xml:lang="en">
Licenses pertaining this stream.
</documentation>
</annotation>
<sequence>
<element name="module" type="mi:license" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
A license of the modular metadata. Multiple elements
imply a logical AND.
</documentation>
</annotation>
</element>
<element name="content" type="mi:license" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
A license of the RPM packages. Multiple elements
imply a logical AND.
</documentation>
</annotation>
</element>
</sequence>
</complexType>
<complexType name="referencesType">
<annotation>
<documentation xml:lang="en">
Links to (usually upstream) places pertaining the packaged software.
</documentation>
</annotation>
<attribute name="community" type="anyURI">
<annotation>
<documentation xml:lang="en">A home page.</documentation>
</annotation>
</attribute>
<attribute name="documentation" type="anyURI">
<annotation>
<documentation xml:lang="en">A documentation.</documentation>
</annotation>
</attribute>
<attribute name="tracker" type="anyURI">
<annotation>
<documentation xml:lang="en">A feature and bug tracking system.</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="profileType">
<annotation>
<documentation xml:lang="en">
A profile of the stream is a group of packages which can be
installed by passing the profile name to a package manager.
</documentation>
</annotation>
<sequence>
<element name="package" type="mi:packageName" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="mi:identifier" use="required">
<annotation>
<documentation xml:lang="en">
An identifier of the profile. It must be unique in the
build. It's scope is a stream of the build.
</documentation>
</annotation>
</attribute>
<attribute name="description" type="mi:multiLine">
<annotation>
<documentation xml:lang="en">
An explanation of the profile.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="nevraType">
<annotation>
<documentation xml:lang="en">
An RPM package which belongs to this stream.
</documentation>
</annotation>
<attribute name="name" type="mi:packageName" use="required">
<annotation>
<documentation xml:lang="en">
A name of the RPM package.
</documentation>
</annotation>
</attribute>
<attribute name="epoch" type="unsignedInt" use="required">
<annotation>
<documentation xml:lang="en">
An epoch number of the RPM package. If the
package seems having no epoch, it's implicit 0.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="mi:rpmVersion" use="required">
<annotation>
<documentation xml:lang="en">
A version of the RPM package.
</documentation>
</annotation>
</attribute>
<attribute name="release" type="mi:rpmVersion" use="required">
<annotation>
<documentation xml:lang="en">
A release of the RPM package.
</documentation>
</annotation>
</attribute>
<attribute name="arch" type="mi:rpmArch" use="required">
<annotation>
<documentation xml:lang="en">
An architecture of the RPM package. Source packages
have a distinct value.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="buildType">
<annotation>
<documentation xml:lang="en">
A set of RPM packages which were built together as a
functional unit and metadata about them.
</documentation>
</annotation>
<sequence>
<element name="dependency" type="mi:dependencyType" minOccurs="0" maxOccurs="unbounded"/>
<element name="license" type="mi:licenseType">
<unique name="licenseModule">
<selector xpath="mi:module"/>
<field xpath="."/>
</unique>
<unique name="licenseContent">
<selector xpath="mi:content"/>
<field xpath="."/>
</unique>
</element>
<element name="references" type="mi:referencesType" minOccurs="0"/>
<element name="profile" type="mi:profileType" minOccurs="0" maxOccurs="unbounded">
<unique name="profilePackage">
<selector xpath="mi:package"/>
<field xpath="."/>
</unique>
</element>
<element name="api" type="mi:packageName" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
A binary package name which is intended for a use and
its interface (name, file names, API, etc.) is
guaranteed to remain stable and compatible for the
whole life of this stream.
</documentation>
</annotation>
</element>
<element name="demodularized" type="mi:packageName" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
A binary package name which used to be part of this
stream (in the older versions) but not anymore and
a package manager should stop hiding the same named
nonmodular packages. That is make the same-name
nonmodular packages available again.
</documentation>
</annotation>
</element>
<element name="nevra" type="mi:nevraType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="version" type="unsignedLong" use="required">
<annotation>
<documentation xml:lang="en">
A version of a build of stream. A package manager uses a
build with the highest version in a particular context and
architecture with satisfied dependencies to obtain
user-visible data, like a stream description or profiles.
The only exception are RPM packages (nevra elements) which
are gathered over all versions of the given stream,
context, and architecture.
To speed up processing, producers are advised to sort
builds by version in numerical, descending order.
</documentation>
</annotation>
</attribute>
<attribute name="context" type="mi:contextType" use="required">
<annotation>
<documentation xml:lang="en">
A context of a build of a a stream. A context distinguishes
flavours of stream. The flavours usually differ by modular
dependencies. It can be used for building the same piece of
software against different versions of a library or a
programming language. Or simply for different releases of a
distribution.
If "static" attribute is true, the context value identifies
an upgrade path (sorted by a version) which a package
manager follows to upgrade from one module build to
another.
If "static" attribute is false, the upgrade path is build
from module builds whose dependencies are the same.
</documentation>
</annotation>
</attribute>
<attribute name="static" type="boolean" default="false">
<annotation>
<documentation xml:lang="en">
If this attribute is true, the context value identifies
an upgrade path (sorted by a version) which a package
manager follows to upgrade from one module build to
another.
If this attribute is false, the upgrade path is build
from module builds whose dependencies are the same
regardless of the context.
</documentation>
</annotation>
</attribute>
<attribute name="arch" type="mi:rpmArch" use="required">
<annotation>
<documentation xml:lang="en">
An architecture of the module build.
</documentation>
</annotation>
</attribute>
<attribute name="summary" type="mi:singleLine" default="">
<annotation>
<documentation xml:lang="en">
A short, one-line, description of the stream.
</documentation>
</annotation>
</attribute>
<attribute name="description" type="mi:multiLine" default="">
<annotation>
<documentation xml:lang="en">
A long, multi-line description of the stream.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="default-profileType">
<annotation>
<documentation xml:lang="en">
Specify a list of profiles to be installed by a package
manager when a stream is requested to be installed without
specifying a particular profile.
</documentation>
</annotation>
<sequence>
<element name="profile" type="mi:identifier" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation xml:lang="en">
Each occurrence sets this profile as a default one.
Multiple occurrences creates a list of default profiles.
No occurrence empties the list of the default profiles.
</documentation>
</annotation>
</element>
</sequence>
<attribute name="modified" type="mi:timestamp" use="required">
<annotation>
<documentation xml:lang="en">
When merging default-profiles from multiple indices,
the latest tree replaces all previous definitions.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="replacementType">
<annotation>
<documentation xml:lang="en">
A module stream identification.
</documentation>
</annotation>
<attribute name="module" type="mi:identifier"/>
<attribute name="stream" type="mi:identifier"/>
</complexType>
<complexType name="eolType">
<annotation>
<documentation xml:lang="en">
An end of life of a stream.
</documentation>
</annotation>
<sequence>
<element name="replacement" type="mi:replacementType" minOccurs="0">
<annotation>
<documentation xml:lang="en">
If this element exists, it defines a new stream which
replaces the obsoleted one. A package manager should
offer a user to upgrade to that new stream.
</documentation>
</annotation>
</element>
</sequence>
<attribute name="when" type="mi:timestamp">
<annotation>
<documentation xml:lang="en">
If the attribute exists, it's the furthest time when the
stream/context is supported. After that time the
stream/context becomes obsolete and a package manager
should warn about it.
If the attribute doesn't exist, it means it's obsolete
right now.
</documentation>
</annotation>
</attribute>
<attribute name="message" type="mi:multiLine" default="">
<annotation>
<documentation xml:lang="en">
A user visible explanation. It can carry a reason or
instructions for the upgrade.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="obsoleteType">
<annotation>
<documentation xml:lang="en">
Define an end of life of a stream or an end of life of a
specific context of the stream. It optionally can point to a
replacement.
</documentation>
</annotation>
<sequence>
<element name="eol" type="mi:eolType" minOccurs="0">
<annotation>
<documentation xml:lang="en">
If this element exists, it defines an end of life of the
(context of the) stream. Otherwise, the (context of
the) stream will be unobsoleted. I.e.:
If this is a context-nonspecific reset, it cancels
obsoleteness for all contexts.
If this is a context-specific reset, it only cancels
obsoleteness of the specific context.
</documentation>
</annotation>
</element>
</sequence>
<attribute name="modified" type="mi:timestamp" use="required">
<annotation>
<documentation xml:lang="en">
When merging context-nonspecific obsoletes from multiple
indices, the latest obsolete definition according to this
attribute overrides older definitions, including resets,
including context-specific definitions.
When merging context-specific obsoletes, the same rule
applies to obsoletes of that context. Later
context-specific obsolete overrides former context-specific
definitions, and overrides context-nonspecific definition
for that context.
I.e., having a context-specific obsolete not older than a
nonspecific one retains the nonspecific one and in
addition overrides the specified context. Contrary, having
a context-nonspecific obsolete newer makes the previous
context-specific obsolete void.
If there are both context-nonspecific and
context-specific obsoletes with the same modified
timestamp, first the nonspecific one is applied and then
the specific one is applied.
</documentation>
</annotation>
</attribute>
<attribute name="context" type="mi:contextOrEmptyType" default="">
<annotation>
<documentation xml:lang="en">
If this attribute exists and is nonempty, the obsolete
pertains only module builds of that static context of this
stream. It cannot apply to builds with a nonstatic context.
Otherwise, the obsolete pertains all contexts of this stream.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="buildTranslation">
<annotation>
<documentation xml:lang="en">
A translatation of a module stream.
</documentation>
</annotation>
<attribute name="summary" type="mi:singleLine">
<annotation>
<documentation xml:lang="en">
A translation for a /index/module/stream/build/@summary.
If missing, unsets.
</documentation>
</annotation>
</attribute>
<attribute name="description" type="mi:multiLine">
<annotation>
<documentation xml:lang="en">
A translation for a /index/module/stream/build/@description.
If missing, unsets.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="profileTranslation">
<annotation>
<documentation xml:lang="en">
A translation of a profile description.
</documentation>
</annotation>
<attribute name="name" type="mi:identifier" use="required">
<annotation>
<documentation xml:lang="en">
An identifier of the profile. It must be unique in the stream.
</documentation>
</annotation>
</attribute>
<attribute name="description" type="mi:multiLine">
<annotation>
<documentation xml:lang="en">
A translation for /index/module/stream/build/profile/@description.
If missing, unsets.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="obsoleteTranslation">
<annotation>
<documentation xml:lang="en">
A translation of an obsolete message.
</documentation>
</annotation>
<attribute name="context" type="mi:contextOrEmptyType" default="">
<annotation>
<documentation xml:lang="en">
If this attribute is nonempty, this translation pertains
obsoletes of only that context. Otherwise, it pertains
obsoletes nonspecific to a context.
</documentation>
</annotation>
</attribute>
<attribute name="message" type="mi:multiLine">
<annotation>
<documentation xml:lang="en">
A translation for /index/module/stream/obsolete/@message.
If missing, unsets.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="localeType">
<annotation>
<documentation xml:lang="en">
The translated strings into a particular language.
It's a sequence of translations for a build, profiles, and
obsoletes. Each of them is optional, but at at least one must
be specified.
A translation of a build applies to all builds of that stream.
Hence the sequence can contain at most one build translation.
A translation of a profile applies to the named profile. Hence
the sequence can contain multiple profile translations.
A translation without naming a context applies to the
context-nonspecific obsolete.
A translation naming a context applies to the context-specific
obsolete. Hence the sequence can contain multiple obsolete
translatations.
</documentation>
</annotation>
<choice>
<sequence>
<element name="build" type="mi:buildTranslation" minOccurs="1"/>
<element name="profile" type="mi:profileTranslation" minOccurs="0" maxOccurs="unbounded"/>
<element name="obsolete" type="mi:obsoleteTranslation" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<sequence>
<element name="profile" type="mi:profileTranslation" minOccurs="1" maxOccurs="unbounded"/>
<element name="obsolete" type="mi:obsoleteTranslation" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<sequence>
<element name="obsolete" type="mi:obsoleteTranslation" minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</choice>
<attribute name="name" type="mi:localeName" use="required">
<annotation>
<documentation xml:lang="en">
A locale identifier according to GNU libc. Without
a codeset part.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="translationType">
<annotation>
<documentation xml:lang="en">
Translated user-visible messages and descriptions pertaining a
stream.
</documentation>
</annotation>
<sequence>
<element name="locale" type="mi:localeType" maxOccurs="unbounded">
<unique name="localeProfile">
<selector xpath="mi:profile"/>
<field xpath="@name"/>
</unique>
<unique name="localeObsolete">
<selector xpath="mi:obsolete"/>
<field xpath="@context"/>
</unique>
</element>
</sequence>
<attribute name="modified" type="mi:timestamp" use="required">
<annotation>
<documentation xml:lang="en">
When merging translations from multiple indices,
translations accumulate and newer, according to this
attribute, translated builds, profiles, and obsoletes replace
older ones, independently.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="streamType">
<annotation>
<documentation xml:lang="en">
A stream is a version, a release, a variant of a software. It
is identified by an in-module unique, short, identifier-like
name. A module-stream pair is globally unique. Streams of a single
module are mutually exclusive for an installation.
</documentation>
</annotation>
<sequence>
<element name="build" type="mi:buildType" minOccurs="0" maxOccurs="unbounded">
<unique name="buildProfile">
<selector xpath="mi:profile"/>
<field xpath="@name"/>
</unique>
</element>
<element name="default-profile" type="mi:default-profileType" minOccurs="0">
<unique name="defaultProfileList">
<selector xpath="mi:profile"/>
<field xpath="."/>
</unique>
</element>
<element name="obsolete" type="mi:obsoleteType" minOccurs="0" maxOccurs="unbounded"/>
<element name="translation" type="mi:translationType" minOccurs="0">
<unique name="translationLocale">
<selector xpath="mi:locale"/>
<field xpath="@name"/>
</unique>
</element>
</sequence>
<attribute name="name" type="mi:identifier" use="required"/>
</complexType>
<complexType name="default-streamType">
<annotation>
<documentation xml:lang="en">
A stream of the module a package manager prefers when a user
request to install a module without specifying a particular
stream.
</documentation>
</annotation>
<attribute name="modified" type="mi:timestamp" use="required">
<annotation>
<documentation xml:lang="en">
When merging default-streams from multiple indices, the
latest one replaces all previous definitions.
</documentation>
</annotation>
</attribute>
<attribute name="stream" type="mi:identifierOrEmpty" default="">
<annotation>
<documentation xml:lang="en">
An identifier of the default stream. An empty or missing
attribute means unsetting the, possibly previously
defined, default stream.
</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="moduleType">
<annotation>
<documentation xml:lang="en">
A module is a collection of RPM packages constituting a particular
software. It is identified by a unique, short, identifier-like
name.
</documentation>
</annotation>
<sequence>
<element name="stream" type="mi:streamType" minOccurs="0" maxOccurs="unbounded">
<unique name="obsoleteContext">
<selector xpath="mi:obsolete"/>
<field xpath="@context"/>
</unique>
</element>
<element name="default-stream" type="mi:default-streamType" minOccurs="0"/>
</sequence>
<attribute name="name" type="mi:identifier" use="required"/>
</complexType>
<element name="index">
<annotation>
<documentation xml:lang="en">
A root element for all modular metadata.
</documentation>
</annotation>
<complexType>
<sequence>
<element name="module" type="mi:moduleType" minOccurs="0" maxOccurs="unbounded">
<unique name="streamName">
<selector xpath="mi:stream"/>
<field xpath="@name">
<annotation>
<documentation xml:lang="en">
To speed up processing, producers are
advised to sort streams by names in
lexicographical, ascending order.
</documentation>
</annotation>
</field>
</unique>
</element>
</sequence>
<attribute name="version" type="nonNegativeInteger" use="required" fixed="1">
<annotation>
<documentation xml:lang="en">
A major version of this index format. Future
incompatible versions of the format will have a
distinct version number.
Implementations which do not support this version are
advised to reject documents of this version.
</documentation>
</annotation>
</attribute>
<attribute name="revision" type="nonNegativeInteger" use="required" fixed="0">
<annotation>
<documentation xml:lang="en">
A minor revision of this index format version. Future
compatible revisions of the format will have
a distinct revsion number, but retain unchanged major
version number.
Implementations which do not support this revision,
but support the major version are advised to process
the document.
Consuming implementations are not advised to validate
the input documents against this XML schema because
this schema only fits to this revision and performs
a strict validation.
</documentation>
</annotation>
</attribute>
</complexType>
<unique name="moduleName">
<selector xpath="mi:module"/>
<field xpath="@name">
<annotation>
<documentation xml:lang="en">
To speed up processing, producers are
advised to sort modules by names in
lexicographical, ascending order.
</documentation>
</annotation>
</field>
</unique>
</element>
</schema>
|