File manager - Edit - /home/newsbmcs.com/public_html/static/img/logo/vmware-tools.tar
Back
scripts/vmware/network 0000755 00000041070 15027404103 0011151 0 ustar 00 #!/bin/sh -x ########################################################## # Copyright (c) 2001-2018, 2021, 2023 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation version 2.1 and no later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################## # # network (Linux) # # Using a combination of a system networking script, ifconfig, ifup, ifdown # and the ip command, attempt to release and renew DHCP leases upon receipt # of suspend and resume events, respectively. # SOURCE=$0 logdir=/var/log logbase=$logdir/vmware-network logfile=$logbase.log # Defines logging mode enabled (1) or disabled (0) logmode=1 # Defines whether to rotate logs (1) or not (0) logrotate=1 # # Get log file path # get_logfile() { file=`vmware-toolbox-cmd config get logging network.data | \ sed -e 's/.*= *//' -e 's/ *$//'` if [ -n "${file##*"UNSET"*}" ]; then logfile=$file logdir=`dirname $logfile` logbase=`echo $logfile | sed 's/\..*$//'` fi } # # Get Network logging config # get_logconfig() { handler=`vmware-toolbox-cmd config get logging network.handler | \ sed -e 's/.*= *//' -e 's/ *$//'` case $handler in "file") get_logfile ;; "file+") get_logfile logrotate=0 ;; "vmx"|"std") logrotate=0 ;; "syslog") logfile=/var/log/syslog logdir=`dirname $logfile` logrotate=0 ;; *) ;; esac } # # Rotate any logs # rotate_logfile() { if [ $logrotate -eq 1 ]; then max=`vmware-toolbox-cmd config get logging network.maxOldLogFiles | \ sed -e 's/.*= *//' -e 's/ *$//'` if [ -z "${max##*"UNSET"*}" -o `expr "$max" : '[0-9]\+$'` -eq 0 ]; then max=9 fi max=`expr $max - 1` for s in `seq $max -1 1`; do d=`expr $s + 1` mv -f $logbase.$s.log $logbase.$d.log done mv -f $logbase.log $logbase.1.log fi } # # Logging api # log() { if [ $logmode -eq 1 ]; then if [ "$handler" = "vmx" ]; then `vmtoolsd --cmd "log $*"` elif [ "$handler" = "std" ]; then echo `date` ": $*" elif [ -w $logdir ]; then space=`df -k $logdir | awk 'NR == 2 { print $4 }'` if [ $space -gt 1024 ]; then echo `date` ": $*" >> $logfile else `vmtoolsd --cmd "log WARNING: [$SOURCE] Logging disabled. No space left in $logdir"` logmode=0 fi else `vmtoolsd --cmd "log WARNING: [$SOURCE] Logging disabled. $logdir is not writable"` logmode=0 fi fi } get_logconfig rotate_logfile log "Executing '$0 $*'" . `dirname "$0"`/../../statechange.subr # # find_networking_script -- # # Searches common Linux distro init/rc paths to find a singular network # services script. # # Result: # Returns a valid networking script path on success or "error" on failure. # # Side effects: # None. # find_networking_script() { local script="error" for dir in "/etc/init.d" "/sbin/init.d" "/etc" "/etc/rc.d" ; do if [ -d "$dir/rc0.d" ] && [ -d "$dir/rc1.d" ] && [ -d "$dir/rc2.d" ] && [ -d "$dir/rc3.d" ] && [ -d "$dir/rc4.d" ] && [ -d "$dir/rc5.d" ] && [ -d "$dir/rc6.d" ]; then # Now find the appropriate networking script. if [ -d "$dir/init.d" ]; then if [ -x "$dir/init.d/network" ]; then script="$dir/init.d/network" elif [ -x "$dir/init.d/networking" ]; then script="$dir/init.d/networking" fi else if [ -x "$dir/network" ]; then script="$dir/network" elif [ -x "$dir/networking" ]; then script="$dir/networking" fi fi fi done log "$script" } # # exec_networking_script -- # # Execute the networking script to bring network interfaces up or down # based on the given input action argument. # exec_networking_script() { local script=$1 local action=$2 # Using SysV "service" if it exists, otherwise fall back to run the # script directly service=`which service 2>/dev/null` if [ $? = 0 -a -n "$service" ]; then serviceName=`basename "$script"` "$service" "$serviceName" "$action" else "$script" "$action" fi return $? } # # exec_systemctl_service -- # # Handle linux distributions that use systemd to replace the legacy # system V startup scripts. The previous network script searching # approach is no longer viable in these systems. Invoke the systemctl # command to control the network service instead. # exec_systemctl_service() { local rc=1 local action=$1 local ctlcmd=$(which systemctl 2>/dev/null) local service [ -z "$ctlcmd" ] && return $rc for svc in systemd-networkd network; do if ! $ctlcmd status $svc | grep -iq 'not-found'; then service=$svc && break fi done [ -z "$service" ] && return $rc $ctlcmd $action $service; rc=$? # When use the systemd-networkd service to shut down interfaces, interface # address and state remain unchanged. Need to use ip command to change its # address and state. if [ $rc = 0 -a $service = 'systemd-networkd' -a $action = 'stop' ]; then config_network_intfs $action; rc=$? fi return $rc } # # del_intf_ip -- # # Use the ip command to remove all the addresses of an interface. # del_intf_ip() { local nic=$1 $ip_cmd addr flush dev $nic return $? } # # ip_intf_ops -- # # Use the ip command to change the state of an interface to up or down. # ip_intf_ops() { local rc=1 local nic=$1 local ops=$2 [ -z "$ip_cmd" ] && return $rc $ip_cmd link set $nic $ops; rc=$? # Remove interface addresses when taking an interface down. if [ $rc = 0 -a $ops = down ]; then del_intf_ip $nic; rc=$? fi return $rc } # # intf_ops -- # # Execute the specified command (ifup or ifdown) if available, otherwise use # the ip command as fallback. If ifup or ifdown fails, run the ip command to # retry the intended operation. # intf_ops() { local rc=0 local cmd=$1 local ops=$2 local nic=$3 local tmp if [ ! -z "$cmd" ]; then tmp=$($cmd $nic 2>&1); rc=$? # Some systems still return a successful status even the command fails # because the interface is not configured in the configuration file. So # have to examine the command output to determine the actual status. if [ $rc = 0 ]; then echo $tmp | egrep -iq 'not configured|ignoring unknown' && rc=1 fi fi # If ifup/ifdown fails, try the ip fallback. if [ -z "$cmd" -o $rc != 0 ]; then ip_intf_ops $nic $ops; rc=$? fi return $rc } # # exec_intf_ops -- # # Perform an operation to bring an individual interface up or down. # exec_intf_ops() { local rc=0 local action=$1 local nic=$2 case $action in start) intf_ops "$ifup_cmd" up $nic; rc=$? ;; stop) intf_ops "$ifdown_cmd" down $nic; rc=$? ;; *) Panic "Illegal interface action: $action" ;; esac return $rc } # # config_network_intfs -- # # For Linux systems not supporting networking scripts to bring interfaces # up or down, provide a way to change the interface state individually. # config_network_intfs() { local rc=0 local action=$1 if [ -f "$activeList" ]; then while read nic; do exec_intf_ops $action $nic rc=$(expr $rc \| $?) done < $activeList fi return $rc } # # run_network_script -- # # Finds out how to run the system's script used to control networking, and # runs it with the given argument (which should be one of the usual SysV # init script arguments). If it does not work, tries the other alternatives. # So far, our alternatives are (a) systemctl (b) network script (c) perform # an individual interface state change. # run_network_script() { local action=$1 local rc=0 local script while true; do exec_systemctl_service $action [ $? != 0 ] || break script=`find_networking_script` if [ $script != "error" ]; then exec_networking_script $script $action [ $? != 0 ] || break fi # Since all the other alternatives fail, need to manually change # individual interface state. config_network_intfs $action; rc=$? break done return $rc } # # save_active_NIC_list -- # # Records a list of every active NIC to /var/run/vmware-active-nics. # # XXX What's the story on aliases? Should they still be included, or will # they be recreated automatically upon resume? # # Results: # $activeList has, one per line, a list of all active NICs. # # Side effects: # None. # save_active_NIC_list() { local intf_out >$activeList # Find out all the non-loopback up interfaces. Use ip if available # otherwise fall back to the ifconfig command. # ifconfig is buggy on some platforms and truncates long # network names if [ -n "$ip_cmd" ]; then for nic in $($ip_cmd link show up | egrep '\bUP\b' | awk -F: '{print $2}'); do $ip_cmd link show ${nic%@*} | grep -iq 'link/ether' && echo ${nic%@*} >> $activeList done else for nic in $($ifconfig_cmd | sed -n 's/^\([^: \t]*\).*$/\1/p'); do intf_out=$($ifconfig_cmd $nic) echo $intf_out | grep -iq loopback && continue echo $intf_out | egrep -q '\bUP\b' && echo $nic >> $activeList done fi } # # rescue_NIC -- # # For each NIC recorded in $activeList that is not currently "up", run # "ifup $nic" or "ip link set $nic up" to bring the interface up. # # Results: # All downed NICs should be active. # rescue_NIC() { local rc=0 local intf_out if [ -f "$activeList" ]; then while read nic; do if [ -n "$ip_cmd" ]; then intf_out=$($ip_cmd link show $nic up) else intf_out=$($ifconfig_cmd $nic) fi if echo $intf_out | grep -q 'UP'; then log "[rescue_nic] $nic is already active." else log "[rescue_nic] activating $nic ..." # Our best effort to activate interfaces, use ifup if available # otherwise use the ip command as fallback. intf_ops "$ifup_cmd" up $nic rc=$(expr $rc \| $?) fi done < $activeList rm -f $activeList fi return $rc } # # TranquilizeNetworkManager -- # # Put the NetworkManager daemon to sleep (maybe). # # See http://projects.gnome.org/NetworkManager/developers/spec.html . # # Results: # Sleep(true) request is sent to the NetworkManager D-Bus interface. # # Side effects: # None. # TranquilizeNetworkManager() { # `which' may be a bit noisy, so we'll shush it. dbusSend=`which dbus-send 2>/dev/null` rc=$? if [ $rc -ne 0 ]; then return $rc fi # Check NetworkManager state before disabling it. nm_state=`$dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.DBus.Properties.Get \ string:'org.freedesktop.NetworkManager' \ string:'State' \ | awk '/variant/ {print $3;}'` if [ -z "$nm_state" ]; then return 1 fi # NetworkManager API 0.7/0.8 0.9 # NM_STATE_ASLEEP 1 10 # NM_STATE_DISCONNECTED 4 20 case $nm_state in 1|4|10|20) # Nothing needs to be done. return 0 ;; esac # NetworkManager 0.8.0 and above $dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Enable boolean:false rc=$? if [ $rc -eq 0 ]; then return $rc fi # NetworkManager 0.7.0 $dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Sleep boolean:true rc=$? if [ $rc -eq 0 ]; then return $rc fi # NetworkManager 0.6 $dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.sleep rc=$? return $rc } # # WakeNetworkManager -- # # Wake the NetworkManager daemon (maybe). # # See http://projects.gnome.org/NetworkManager/developers/spec.html . # # Results: # Sleep(false)request is sent to the NetworkManager D-Bus interface. # # Side effects: # None. # WakeNetworkManager() { # `which' may be a bit noisy, so we'll shush it. dbusSend=`which dbus-send 2>/dev/null` rc=$? if [ $rc = 0 ]; then # NetworkManager 0.8.0 $dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Enable boolean:true rc=$? if [ $rc = 0 ]; then return $rc fi # NetworkManager 0.7.0 $dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Sleep boolean:false rc=$? if [ $rc = 0 ]; then return $rc fi # NetworkManager 0.6 $dbusSend --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.wake rc=$? fi return $rc } # # confidence_check -- # # Check if the script has all the commands it needs to carry out the # request. So far, it requires either ip or ifconfig command to read # interface configuration. Ifup is not checked here. It is checked at # the place where we need to do individual interface state change. # confidence_check() { ip_cmd=$(which ip 2>/dev/null) ifconfig_cmd=$(which ifconfig 2>/dev/null) ifup_cmd=$(which ifup 2>/dev/null) ifdown_cmd=$(which ifdown 2>/dev/null) [ -z "$ifconfig_cmd" -a -z "$ip_cmd" ] && \ Panic "ip and ifconfig not in search path." } # # main -- # # Main entry point. Perform some confidence checking, then map state change # events to relevant networking operations. # # Results: # See comment at top of file. # main() { exitCode=0 activeList=/var/run/vmware-active-nics case "$1" in poweron-vm) rm -f $activeList ;; suspend-vm) TranquilizeNetworkManager exitCode=$? if [ $exitCode != 0 ]; then confidence_check suspend-vm save_active_NIC_list run_network_script stop exitCode=$? fi ;; resume-vm) WakeNetworkManager exitCode=$? if [ $exitCode != 0 ]; then confidence_check resume-vm # According to hfu, "/etc/init.d/networking restart" on Debian 5.0 # may bring down ethernet interfaces tagged as "allow-hotplug" without # bringing them back up. # # This is especially a problem when reverting to a live, running # VM snapshot where an active NIC list hadn't yet been generated, # resulting in sudden loss of an otherwise operational NIC. # # So, if the active list doesn't exist, assume we're coming back to # a live snapshot and capture the current active list now for # rescue later. if [ ! -s $activeList ]; then save_active_NIC_list fi # We shall use start not restart here. Otherwise we may not be able # to bring back active list on distros like sles11sp2 # -- PR 816791 run_network_script start rescue_NIC exitCode=$? fi ;; *) log "No argument supplied." ;; esac return $exitCode } main "$@" log "Finished '$0 $*'" vgauth.conf 0000644 00000000161 15027404103 0006703 0 ustar 00 [service] samlSchemaDir = /etc/vmware-tools/vgauth/schemas [localization] msgCatalog = /usr/share/open-vm-tools vgauth/schemas/xenc-schema.xsd 0000644 00000012032 15027404103 0012372 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "XMLSchema.dtd" [ <!ATTLIST schema xmlns:xenc CDATA #FIXED 'http://www.w3.org/2001/04/xmlenc#' xmlns:ds CDATA #FIXED 'http://www.w3.org/2000/09/xmldsig#'> <!ENTITY xenc 'http://www.w3.org/2001/04/xmlenc#'> <!ENTITY % p ''> <!ENTITY % s ''> ]> <schema xmlns="http://www.w3.org/2001/XMLSchema" version="1.0" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified"> <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> <complexType name="EncryptedType" abstract="true"> <sequence> <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/> <element ref="ds:KeyInfo" minOccurs="0"/> <element ref="xenc:CipherData"/> <element ref="xenc:EncryptionProperties" minOccurs="0"/> </sequence> <attribute name="Id" type="ID" use="optional"/> <attribute name="Type" type="anyURI" use="optional"/> <attribute name="MimeType" type="string" use="optional"/> <attribute name="Encoding" type="anyURI" use="optional"/> </complexType> <complexType name="EncryptionMethodType" mixed="true"> <sequence> <element name="KeySize" minOccurs="0" type="xenc:KeySizeType"/> <element name="OAEPparams" minOccurs="0" type="base64Binary"/> <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="Algorithm" type="anyURI" use="required"/> </complexType> <simpleType name="KeySizeType"> <restriction base="integer"/> </simpleType> <element name="CipherData" type="xenc:CipherDataType"/> <complexType name="CipherDataType"> <choice> <element name="CipherValue" type="base64Binary"/> <element ref="xenc:CipherReference"/> </choice> </complexType> <element name="CipherReference" type="xenc:CipherReferenceType"/> <complexType name="CipherReferenceType"> <choice> <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/> </choice> <attribute name="URI" type="anyURI" use="required"/> </complexType> <complexType name="TransformsType"> <sequence> <element ref="ds:Transform" maxOccurs="unbounded"/> </sequence> </complexType> <element name="EncryptedData" type="xenc:EncryptedDataType"/> <complexType name="EncryptedDataType"> <complexContent> <extension base="xenc:EncryptedType"> </extension> </complexContent> </complexType> <!-- Children of ds:KeyInfo --> <element name="EncryptedKey" type="xenc:EncryptedKeyType"/> <complexType name="EncryptedKeyType"> <complexContent> <extension base="xenc:EncryptedType"> <sequence> <element ref="xenc:ReferenceList" minOccurs="0"/> <element name="CarriedKeyName" type="string" minOccurs="0"/> </sequence> <attribute name="Recipient" type="string" use="optional"/> </extension> </complexContent> </complexType> <element name="AgreementMethod" type="xenc:AgreementMethodType"/> <complexType name="AgreementMethodType" mixed="true"> <sequence> <element name="KA-Nonce" minOccurs="0" type="base64Binary"/> <!-- <element ref="ds:DigestMethod" minOccurs="0"/> --> <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/> <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/> </sequence> <attribute name="Algorithm" type="anyURI" use="required"/> </complexType> <!-- End Children of ds:KeyInfo --> <element name="ReferenceList"> <complexType> <choice minOccurs="1" maxOccurs="unbounded"> <element name="DataReference" type="xenc:ReferenceType"/> <element name="KeyReference" type="xenc:ReferenceType"/> </choice> </complexType> </element> <complexType name="ReferenceType"> <sequence> <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="URI" type="anyURI" use="required"/> </complexType> <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/> <complexType name="EncryptionPropertiesType"> <sequence> <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/> </sequence> <attribute name="Id" type="ID" use="optional"/> </complexType> <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/> <complexType name="EncryptionPropertyType" mixed="true"> <choice maxOccurs="unbounded"> <any namespace="##other" processContents="lax"/> </choice> <attribute name="Target" type="anyURI" use="optional"/> <attribute name="Id" type="ID" use="optional"/> <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/> </complexType> </schema> vgauth/schemas/catalog.xml 0000644 00000000731 15027404103 0011616 0 ustar 00 <?xml version="1.0"?> <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> <uri name="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" uri="xmldsig-core-schema.xsd"/> <uri name="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd" uri="xenc-schema.xsd"/> </catalog> vgauth/schemas/XMLSchema.dtd 0000644 00000037310 15027404103 0011743 0 ustar 00 <!-- DTD for XML Schemas: Part 1: Structures Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN" Official Location: http://www.w3.org/2001/XMLSchema.dtd --> <!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ --> <!-- Note this DTD is NOT normative, or even definitive. --> <!--d--> <!-- prose copy in the structures REC is the definitive version --> <!--d--> <!-- (which shouldn't differ from this one except for this --> <!--d--> <!-- comment and entity expansions, but just in case) --> <!--d--> <!-- With the exception of cases with multiple namespace prefixes for the XML Schema namespace, any XML document which is not valid per this DTD given redefinitions in its internal subset of the 'p' and 's' parameter entities below appropriate to its namespace declaration of the XML Schema namespace is almost certainly not a valid schema. --> <!-- The simpleType element and its constituent parts are defined in XML Schema: Part 2: Datatypes --> <!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' > <!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a schema document to establish a different namespace prefix --> <!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must also define %s as the suffix for the appropriate namespace declaration (e.g. :foo) --> <!ENTITY % nds 'xmlns%s;'> <!-- Define all the element names, with optional prefix --> <!ENTITY % schema "%p;schema"> <!ENTITY % complexType "%p;complexType"> <!ENTITY % complexContent "%p;complexContent"> <!ENTITY % simpleContent "%p;simpleContent"> <!ENTITY % extension "%p;extension"> <!ENTITY % element "%p;element"> <!ENTITY % unique "%p;unique"> <!ENTITY % key "%p;key"> <!ENTITY % keyref "%p;keyref"> <!ENTITY % selector "%p;selector"> <!ENTITY % field "%p;field"> <!ENTITY % group "%p;group"> <!ENTITY % all "%p;all"> <!ENTITY % choice "%p;choice"> <!ENTITY % sequence "%p;sequence"> <!ENTITY % any "%p;any"> <!ENTITY % anyAttribute "%p;anyAttribute"> <!ENTITY % attribute "%p;attribute"> <!ENTITY % attributeGroup "%p;attributeGroup"> <!ENTITY % include "%p;include"> <!ENTITY % import "%p;import"> <!ENTITY % redefine "%p;redefine"> <!ENTITY % notation "%p;notation"> <!-- annotation elements --> <!ENTITY % annotation "%p;annotation"> <!ENTITY % appinfo "%p;appinfo"> <!ENTITY % documentation "%p;documentation"> <!-- Customisation entities for the ATTLIST of each element type. Define one of these if your schema takes advantage of the anyAttribute='##other' in the schema for schemas --> <!ENTITY % schemaAttrs ''> <!ENTITY % complexTypeAttrs ''> <!ENTITY % complexContentAttrs ''> <!ENTITY % simpleContentAttrs ''> <!ENTITY % extensionAttrs ''> <!ENTITY % elementAttrs ''> <!ENTITY % groupAttrs ''> <!ENTITY % allAttrs ''> <!ENTITY % choiceAttrs ''> <!ENTITY % sequenceAttrs ''> <!ENTITY % anyAttrs ''> <!ENTITY % anyAttributeAttrs ''> <!ENTITY % attributeAttrs ''> <!ENTITY % attributeGroupAttrs ''> <!ENTITY % uniqueAttrs ''> <!ENTITY % keyAttrs ''> <!ENTITY % keyrefAttrs ''> <!ENTITY % selectorAttrs ''> <!ENTITY % fieldAttrs ''> <!ENTITY % includeAttrs ''> <!ENTITY % importAttrs ''> <!ENTITY % redefineAttrs ''> <!ENTITY % notationAttrs ''> <!ENTITY % annotationAttrs ''> <!ENTITY % appinfoAttrs ''> <!ENTITY % documentationAttrs ''> <!ENTITY % complexDerivationSet "CDATA"> <!-- #all or space-separated list drawn from derivationChoice --> <!ENTITY % blockSet "CDATA"> <!-- #all or space-separated list drawn from derivationChoice + 'substitution' --> <!ENTITY % mgs '%all; | %choice; | %sequence;'> <!ENTITY % cs '%choice; | %sequence;'> <!ENTITY % formValues '(qualified|unqualified)'> <!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'> <!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'> <!-- This is used in part2 --> <!ENTITY % restriction1 '((%mgs; | %group;)?)'> %xs-datatypes; <!-- the duplication below is to produce an unambiguous content model which allows annotation everywhere --> <!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*, ((%simpleType; | %complexType; | %element; | %attribute; | %attributeGroup; | %group; | %notation; ), (%annotation;)*)* )> <!ATTLIST %schema; targetNamespace %URIref; #IMPLIED version CDATA #IMPLIED %nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema' xmlns CDATA #IMPLIED finalDefault %complexDerivationSet; '' blockDefault %blockSet; '' id ID #IMPLIED elementFormDefault %formValues; 'unqualified' attributeFormDefault %formValues; 'unqualified' xml:lang CDATA #IMPLIED %schemaAttrs;> <!-- Note the xmlns declaration is NOT in the Schema for Schemas, because at the Infoset level where schemas operate, xmlns(:prefix) is NOT an attribute! --> <!-- The declaration of xmlns is a convenience for schema authors --> <!-- The id attribute here and below is for use in external references from non-schemas using simple fragment identifiers. It is NOT used for schema-to-schema reference, internal or external. --> <!-- a type is a named content type specification which allows attribute declarations--> <!-- --> <!ELEMENT %complexType; ((%annotation;)?, (%simpleContent;|%complexContent;| %particleAndAttrs;))> <!ATTLIST %complexType; name %NCName; #IMPLIED id ID #IMPLIED abstract %boolean; #IMPLIED final %complexDerivationSet; #IMPLIED block %complexDerivationSet; #IMPLIED mixed (true|false) 'false' %complexTypeAttrs;> <!-- particleAndAttrs is shorthand for a root type --> <!-- mixed is disallowed if simpleContent, overriden if complexContent has one too. --> <!-- If anyAttribute appears in one or more referenced attributeGroups and/or explicitly, the intersection of the permissions is used --> <!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))> <!ATTLIST %complexContent; mixed (true|false) #IMPLIED id ID #IMPLIED %complexContentAttrs;> <!-- restriction should use the branch defined above, not the simple one from part2; extension should use the full model --> <!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))> <!ATTLIST %simpleContent; id ID #IMPLIED %simpleContentAttrs;> <!-- restriction should use the simple branch from part2, not the one defined above; extension should have no particle --> <!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))> <!ATTLIST %extension; base %QName; #REQUIRED id ID #IMPLIED %extensionAttrs;> <!-- an element is declared by either: a name and a type (either nested or referenced via the type attribute) or a ref to an existing element declaration --> <!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?, (%unique; | %key; | %keyref;)*)> <!-- simpleType or complexType only if no type|ref attribute --> <!-- ref not allowed at top level --> <!ATTLIST %element; name %NCName; #IMPLIED id ID #IMPLIED ref %QName; #IMPLIED type %QName; #IMPLIED minOccurs %nonNegativeInteger; #IMPLIED maxOccurs CDATA #IMPLIED nillable %boolean; #IMPLIED substitutionGroup %QName; #IMPLIED abstract %boolean; #IMPLIED final %complexDerivationSet; #IMPLIED block %blockSet; #IMPLIED default CDATA #IMPLIED fixed CDATA #IMPLIED form %formValues; #IMPLIED %elementAttrs;> <!-- type and ref are mutually exclusive. name and ref are mutually exclusive, one is required --> <!-- In the absence of type AND ref, type defaults to type of substitutionGroup, if any, else the ur-type, i.e. unconstrained --> <!-- default and fixed are mutually exclusive --> <!ELEMENT %group; ((%annotation;)?,(%mgs;)?)> <!ATTLIST %group; name %NCName; #IMPLIED ref %QName; #IMPLIED minOccurs %nonNegativeInteger; #IMPLIED maxOccurs CDATA #IMPLIED id ID #IMPLIED %groupAttrs;> <!ELEMENT %all; ((%annotation;)?, (%element;)*)> <!ATTLIST %all; minOccurs (1) #IMPLIED maxOccurs (1) #IMPLIED id ID #IMPLIED %allAttrs;> <!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)> <!ATTLIST %choice; minOccurs %nonNegativeInteger; #IMPLIED maxOccurs CDATA #IMPLIED id ID #IMPLIED %choiceAttrs;> <!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)> <!ATTLIST %sequence; minOccurs %nonNegativeInteger; #IMPLIED maxOccurs CDATA #IMPLIED id ID #IMPLIED %sequenceAttrs;> <!-- an anonymous grouping in a model, or a top-level named group definition, or a reference to same --> <!-- Note that if order is 'all', group is not allowed inside. If order is 'all' THIS group must be alone (or referenced alone) at the top level of a content model --> <!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside --> <!-- Should allow minOccurs=0 inside order='all' . . . --> <!ELEMENT %any; (%annotation;)?> <!ATTLIST %any; namespace CDATA '##any' processContents (skip|lax|strict) 'strict' minOccurs %nonNegativeInteger; '1' maxOccurs CDATA '1' id ID #IMPLIED %anyAttrs;> <!-- namespace is interpreted as follows: ##any - - any non-conflicting WFXML at all ##other - - any non-conflicting WFXML from namespace other than targetNamespace ##local - - any unqualified non-conflicting WFXML/attribute one or - - any non-conflicting WFXML from more URI the listed namespaces references ##targetNamespace ##local may appear in the above list, with the obvious meaning --> <!ELEMENT %anyAttribute; (%annotation;)?> <!ATTLIST %anyAttribute; namespace CDATA '##any' processContents (skip|lax|strict) 'strict' id ID #IMPLIED %anyAttributeAttrs;> <!-- namespace is interpreted as for 'any' above --> <!-- simpleType only if no type|ref attribute --> <!-- ref not allowed at top level, name iff at top level --> <!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)> <!ATTLIST %attribute; name %NCName; #IMPLIED id ID #IMPLIED ref %QName; #IMPLIED type %QName; #IMPLIED use (prohibited|optional|required) #IMPLIED default CDATA #IMPLIED fixed CDATA #IMPLIED form %formValues; #IMPLIED %attributeAttrs;> <!-- type and ref are mutually exclusive. name and ref are mutually exclusive, one is required --> <!-- default for use is optional when nested, none otherwise --> <!-- default and fixed are mutually exclusive --> <!-- type attr and simpleType content are mutually exclusive --> <!-- an attributeGroup is a named collection of attribute decls, or a reference thereto --> <!ELEMENT %attributeGroup; ((%annotation;)?, (%attribute; | %attributeGroup;)*, (%anyAttribute;)?) > <!ATTLIST %attributeGroup; name %NCName; #IMPLIED id ID #IMPLIED ref %QName; #IMPLIED %attributeGroupAttrs;> <!-- ref iff no content, no name. ref iff not top level --> <!-- better reference mechanisms --> <!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)> <!ATTLIST %unique; name %NCName; #REQUIRED id ID #IMPLIED %uniqueAttrs;> <!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)> <!ATTLIST %key; name %NCName; #REQUIRED id ID #IMPLIED %keyAttrs;> <!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)> <!ATTLIST %keyref; name %NCName; #REQUIRED refer %QName; #REQUIRED id ID #IMPLIED %keyrefAttrs;> <!ELEMENT %selector; ((%annotation;)?)> <!ATTLIST %selector; xpath %XPathExpr; #REQUIRED id ID #IMPLIED %selectorAttrs;> <!ELEMENT %field; ((%annotation;)?)> <!ATTLIST %field; xpath %XPathExpr; #REQUIRED id ID #IMPLIED %fieldAttrs;> <!-- Schema combination mechanisms --> <!ELEMENT %include; (%annotation;)?> <!ATTLIST %include; schemaLocation %URIref; #REQUIRED id ID #IMPLIED %includeAttrs;> <!ELEMENT %import; (%annotation;)?> <!ATTLIST %import; namespace %URIref; #IMPLIED schemaLocation %URIref; #IMPLIED id ID #IMPLIED %importAttrs;> <!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; | %attributeGroup; | %group;)*> <!ATTLIST %redefine; schemaLocation %URIref; #REQUIRED id ID #IMPLIED %redefineAttrs;> <!ELEMENT %notation; (%annotation;)?> <!ATTLIST %notation; name %NCName; #REQUIRED id ID #IMPLIED public CDATA #REQUIRED system %URIref; #IMPLIED %notationAttrs;> <!-- Annotation is either application information or documentation --> <!-- By having these here they are available for datatypes as well as all the structures elements --> <!ELEMENT %annotation; (%appinfo; | %documentation;)*> <!ATTLIST %annotation; %annotationAttrs;> <!-- User must define annotation elements in internal subset for this to work --> <!ELEMENT %appinfo; ANY> <!-- too restrictive --> <!ATTLIST %appinfo; source %URIref; #IMPLIED id ID #IMPLIED %appinfoAttrs;> <!ELEMENT %documentation; ANY> <!-- too restrictive --> <!ATTLIST %documentation; source %URIref; #IMPLIED id ID #IMPLIED xml:lang CDATA #IMPLIED %documentationAttrs;> <!NOTATION XMLSchemaStructures PUBLIC 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' > <!NOTATION XML PUBLIC 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' > vgauth/schemas/xmldsig-core-schema.xsd 0000644 00000023640 15027404103 0014041 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "XMLSchema.dtd" [ <!ATTLIST schema xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#"> <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'> <!ENTITY % p ''> <!ENTITY % s ''> ]> <!-- Schema for XML Signatures http://www.w3.org/2000/09/xmldsig# $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $ Copyright 2001 The Internet Society and W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ This document is governed by the W3C Software License [1] as described in the FAQ [2]. [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720 [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD --> <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" elementFormDefault="qualified"> <!-- Basic Types Defined for Signatures --> <simpleType name="CryptoBinary"> <restriction base="base64Binary"> </restriction> </simpleType> <!-- Start Signature --> <element name="Signature" type="ds:SignatureType"/> <complexType name="SignatureType"> <sequence> <element ref="ds:SignedInfo"/> <element ref="ds:SignatureValue"/> <element ref="ds:KeyInfo" minOccurs="0"/> <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="Id" type="ID" use="optional"/> </complexType> <element name="SignatureValue" type="ds:SignatureValueType"/> <complexType name="SignatureValueType"> <simpleContent> <extension base="base64Binary"> <attribute name="Id" type="ID" use="optional"/> </extension> </simpleContent> </complexType> <!-- Start SignedInfo --> <element name="SignedInfo" type="ds:SignedInfoType"/> <complexType name="SignedInfoType"> <sequence> <element ref="ds:CanonicalizationMethod"/> <element ref="ds:SignatureMethod"/> <element ref="ds:Reference" maxOccurs="unbounded"/> </sequence> <attribute name="Id" type="ID" use="optional"/> </complexType> <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> <complexType name="CanonicalizationMethodType" mixed="true"> <sequence> <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> <!-- (0,unbounded) elements from (1,1) namespace --> </sequence> <attribute name="Algorithm" type="anyURI" use="required"/> </complexType> <element name="SignatureMethod" type="ds:SignatureMethodType"/> <complexType name="SignatureMethodType" mixed="true"> <sequence> <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/> <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> <!-- (0,unbounded) elements from (1,1) external namespace --> </sequence> <attribute name="Algorithm" type="anyURI" use="required"/> </complexType> <!-- Start Reference --> <element name="Reference" type="ds:ReferenceType"/> <complexType name="ReferenceType"> <sequence> <element ref="ds:Transforms" minOccurs="0"/> <element ref="ds:DigestMethod"/> <element ref="ds:DigestValue"/> </sequence> <attribute name="Id" type="ID" use="optional"/> <attribute name="URI" type="anyURI" use="optional"/> <attribute name="Type" type="anyURI" use="optional"/> </complexType> <element name="Transforms" type="ds:TransformsType"/> <complexType name="TransformsType"> <sequence> <element ref="ds:Transform" maxOccurs="unbounded"/> </sequence> </complexType> <element name="Transform" type="ds:TransformType"/> <complexType name="TransformType" mixed="true"> <choice minOccurs="0" maxOccurs="unbounded"> <any namespace="##other" processContents="lax"/> <!-- (1,1) elements from (0,unbounded) namespaces --> <element name="XPath" type="string"/> </choice> <attribute name="Algorithm" type="anyURI" use="required"/> </complexType> <!-- End Reference --> <element name="DigestMethod" type="ds:DigestMethodType"/> <complexType name="DigestMethodType" mixed="true"> <sequence> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="Algorithm" type="anyURI" use="required"/> </complexType> <element name="DigestValue" type="ds:DigestValueType"/> <simpleType name="DigestValueType"> <restriction base="base64Binary"/> </simpleType> <!-- End SignedInfo --> <!-- Start KeyInfo --> <element name="KeyInfo" type="ds:KeyInfoType"/> <complexType name="KeyInfoType" mixed="true"> <choice maxOccurs="unbounded"> <element ref="ds:KeyName"/> <element ref="ds:KeyValue"/> <element ref="ds:RetrievalMethod"/> <element ref="ds:X509Data"/> <element ref="ds:PGPData"/> <element ref="ds:SPKIData"/> <element ref="ds:MgmtData"/> <any processContents="lax" namespace="##other"/> <!-- (1,1) elements from (0,unbounded) namespaces --> </choice> <attribute name="Id" type="ID" use="optional"/> </complexType> <element name="KeyName" type="string"/> <element name="MgmtData" type="string"/> <element name="KeyValue" type="ds:KeyValueType"/> <complexType name="KeyValueType" mixed="true"> <choice> <element ref="ds:DSAKeyValue"/> <element ref="ds:RSAKeyValue"/> <any namespace="##other" processContents="lax"/> </choice> </complexType> <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> <complexType name="RetrievalMethodType"> <sequence> <element ref="ds:Transforms" minOccurs="0"/> </sequence> <attribute name="URI" type="anyURI"/> <attribute name="Type" type="anyURI" use="optional"/> </complexType> <!-- Start X509Data --> <element name="X509Data" type="ds:X509DataType"/> <complexType name="X509DataType"> <sequence maxOccurs="unbounded"> <choice> <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> <element name="X509SKI" type="base64Binary"/> <element name="X509SubjectName" type="string"/> <element name="X509Certificate" type="base64Binary"/> <element name="X509CRL" type="base64Binary"/> <any namespace="##other" processContents="lax"/> </choice> </sequence> </complexType> <complexType name="X509IssuerSerialType"> <sequence> <element name="X509IssuerName" type="string"/> <element name="X509SerialNumber" type="integer"/> </sequence> </complexType> <!-- End X509Data --> <!-- Begin PGPData --> <element name="PGPData" type="ds:PGPDataType"/> <complexType name="PGPDataType"> <choice> <sequence> <element name="PGPKeyID" type="base64Binary"/> <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <sequence> <element name="PGPKeyPacket" type="base64Binary"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> </choice> </complexType> <!-- End PGPData --> <!-- Begin SPKIData --> <element name="SPKIData" type="ds:SPKIDataType"/> <complexType name="SPKIDataType"> <sequence maxOccurs="unbounded"> <element name="SPKISexp" type="base64Binary"/> <any namespace="##other" processContents="lax" minOccurs="0"/> </sequence> </complexType> <!-- End SPKIData --> <!-- End KeyInfo --> <!-- Start Object (Manifest, SignatureProperty) --> <element name="Object" type="ds:ObjectType"/> <complexType name="ObjectType" mixed="true"> <sequence minOccurs="0" maxOccurs="unbounded"> <any namespace="##any" processContents="lax"/> </sequence> <attribute name="Id" type="ID" use="optional"/> <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet --> <attribute name="Encoding" type="anyURI" use="optional"/> </complexType> <element name="Manifest" type="ds:ManifestType"/> <complexType name="ManifestType"> <sequence> <element ref="ds:Reference" maxOccurs="unbounded"/> </sequence> <attribute name="Id" type="ID" use="optional"/> </complexType> <element name="SignatureProperties" type="ds:SignaturePropertiesType"/> <complexType name="SignaturePropertiesType"> <sequence> <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> </sequence> <attribute name="Id" type="ID" use="optional"/> </complexType> <element name="SignatureProperty" type="ds:SignaturePropertyType"/> <complexType name="SignaturePropertyType" mixed="true"> <choice maxOccurs="unbounded"> <any namespace="##other" processContents="lax"/> <!-- (1,1) elements from (1,unbounded) namespaces --> </choice> <attribute name="Target" type="anyURI" use="required"/> <attribute name="Id" type="ID" use="optional"/> </complexType> <!-- End Object (Manifest, SignatureProperty) --> <!-- Start Algorithm Parameters --> <simpleType name="HMACOutputLengthType"> <restriction base="integer"/> </simpleType> <!-- Start KeyValue Element-types --> <element name="DSAKeyValue" type="ds:DSAKeyValueType"/> <complexType name="DSAKeyValueType"> <sequence> <sequence minOccurs="0"> <element name="P" type="ds:CryptoBinary"/> <element name="Q" type="ds:CryptoBinary"/> </sequence> <element name="G" type="ds:CryptoBinary" minOccurs="0"/> <element name="Y" type="ds:CryptoBinary"/> <element name="J" type="ds:CryptoBinary" minOccurs="0"/> <sequence minOccurs="0"> <element name="Seed" type="ds:CryptoBinary"/> <element name="PgenCounter" type="ds:CryptoBinary"/> </sequence> </sequence> </complexType> <element name="RSAKeyValue" type="ds:RSAKeyValueType"/> <complexType name="RSAKeyValueType"> <sequence> <element name="Modulus" type="ds:CryptoBinary"/> <element name="Exponent" type="ds:CryptoBinary"/> </sequence> </complexType> <!-- End KeyValue Element-types --> <!-- End Signature --> </schema> vgauth/schemas/XMLSchema-instance.xsd 0000644 00000002277 15027404103 0013574 0 ustar 00 <?xml version='1.0'?> <!DOCTYPE xs:schema SYSTEM "XMLSchema.dtd" [ <!ELEMENT p ANY> <!ELEMENT a ANY> <!ATTLIST a href CDATA #IMPLIED> <!ELEMENT hr ANY> <!ELEMENT h1 ANY> <!ELEMENT br ANY> ]> <xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml"> <xs:annotation> <xs:documentation> <h1>XML Schema instance namespace</h1> <p>See <a href="http://www.w3.org/TR/xmlschema-1/">the XML Schema Recommendation</a> for an introduction</p> <hr /> $Date: 2001/03/16 20:25:57 $<br /> $Id: XMLSchema-instance.xsd,v 1.4 2001/03/16 20:25:57 ht Exp $ </xs:documentation> </xs:annotation> <xs:annotation> <xs:documentation><p>This schema should never be used as such: <a href="http://www.w3.org/TR/xmlschema-1/#no-xsi">the XML Schema Recommendation</a> forbids the declaration of attributes in this namespace</p> </xs:documentation> </xs:annotation> <xs:attribute name="nil"/> <xs:attribute name="type"/> <xs:attribute name="schemaLocation"/> <xs:attribute name="noNamespaceSchemaLocation"/> </xs:schema> vgauth/schemas/XMLSchema-hasFacetAndProperty.xsd 0000644 00000013227 15027404103 0015673 0 ustar 00 <?xml version='1.0'?> <!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [ <!ENTITY % s ''> <!ENTITY % p ''> <!-- keep this XML 1.0 correct --> <!ATTLIST schema xmlns:hfp CDATA #IMPLIED xmlns:xhtml CDATA #IMPLIED xmlns:xsi CDATA #IMPLIED xsi:schemaLocation CDATA #IMPLIED> <!ELEMENT xhtml:p ANY> <!ELEMENT xhtml:em ANY> ]> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/1999/xhtml.xsd"> <annotation> <documentation> <xhtml:p> This schema defines 2 elements for use in the appinfo portion section of (potentially) all builtin datatypes in the schema for XML Schema Part 2: Datatypes. </xhtml:p> <xhtml:p> One intended use of this appinfo is in the generation of the HTML version of the XML Schema Part 2: Datatypes specification itself. All portions of the HTML text which describe the facets and/or properties of each datatype is generated by an XSLT transformation which keys off of this appinfo. </xhtml:p> <xhtml:p> Schema processors may have another use for this appinfo (although one certainly not required in any way by the specification). The information may be useful in dynamically building validation modules/classes and/or user-interfaces for schema creation. </xhtml:p> </documentation> </annotation> <element name="hasFacet"> <annotation> <documentation> <xhtml:p> hasFacet is used to signal that the contraining facet given in the name attribute is applicable to a primitive datatype (and all types derived from it). </xhtml:p> <xhtml:p> Note: this element will only appear in the appinfo of primitive types or built-in types derived by "list". </xhtml:p> <xhtml:p> A schema processor (or the XSLT which generates the HTML version of the XML Schema Part 2: Datatypes specification) which reads a derived simpleType definition should walk up the base type chain until it reaches the primitive type at the top of the chain and "push" all facets found their down to all derived types in the chain. </xhtml:p> </documentation> </annotation> <complexType> <attribute name="name" use="required"> <simpleType> <annotation> <documentation> <xhtml:p> This datatype names all existing contraining facets. </xhtml:p> <xhtml:p> Question: should each of the enumerations below be given a documentation annotation, which would contain the text to be used in the definition of the facet in the XML Schema Part 2: Datatypes specification? Might be nice to try to collect all of that information together here. </xhtml:p> </documentation> </annotation> <restriction base="NMTOKEN"> <enumeration value="length"/> <enumeration value="minLength"/> <enumeration value="maxLength"/> <enumeration value="pattern"/> <enumeration value="enumeration"/> <enumeration value="maxInclusive"/> <enumeration value="maxExclusive"/> <enumeration value="minInclusive"/> <enumeration value="minExclusive"/> <enumeration value="totalDigits"/> <enumeration value="fractionDigits"/> <enumeration value="whiteSpace"/> <enumeration value="maxScale"/> <enumeration value="minScale"/> </restriction> </simpleType> </attribute> </complexType> </element> <element name="hasProperty"> <annotation> <documentation> <xhtml:p> hasProperty is used to signal that the property given in the name attribute has the value given in the value attribute for the datatype in which it occurs (and all types derived from it, which do not override the value of the property). </xhtml:p> <xhtml:p> Note: this element may appear in the appinfo of primitive and built-in derived types. </xhtml:p> <xhtml:p> A schema processor (or the XSLT which generates the HTML version of the XML Schema Part 2: Datatypes specification) which reads a simpleType definition should gather the information from any occurances of hasProperty in that simpleType definition, and then walk up the base type chain gathering information from any occurances of hasProperty (unless a value was given to the name in a dervied type) until either it reaches the primitive type at the top of the chain or it has gathered values for all existing properties. </xhtml:p> </documentation> </annotation> <complexType> <attribute name="name" use="required"> <simpleType> <annotation> <documentation> <xhtml:p> This datatype names all existing fundamental facets, otherwise known as properties (with the exception of <xhtml:em>equality</xhtml:em>, a property which has no <xhtml:em>value</xhtml:em>). </xhtml:p> <xhtml:p> Question: should each of the enumerations below be given a documentation annotation, which would contain the text to be used in the definition of the properties in the XML Schema Part 2: Datatypes specification? Might be nice to try to collect all of that information together here. </xhtml:p> </documentation> </annotation> <restriction base="NMTOKEN"> <enumeration value="ordered"/> <enumeration value="bounded"/> <enumeration value="cardinality"/> <enumeration value="numeric"/> </restriction> </simpleType> </attribute> <attribute name="value" type="normalizedString" use="required"/> </complexType> </element> </schema> vgauth/schemas/saml-schema-assertion-2.0.xsd 0000644 00000031115 15027404103 0014676 0 ustar 00 <?xml version="1.0" encoding="US-ASCII"?> <schema targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="substitution" version="2.0"> <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> <import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd"/> <annotation> <documentation> Document identifier: saml-schema-assertion-2.0 Location: http://docs.oasis-open.org/security/saml/v2.0/ Revision history: V1.0 (November, 2002): Initial Standard Schema. V1.1 (September, 2003): Updates within the same V1.0 namespace. V2.0 (March, 2005): New assertion schema for SAML V2.0 namespace. </documentation> </annotation> <attributeGroup name="IDNameQualifiers"> <attribute name="NameQualifier" type="string" use="optional"/> <attribute name="SPNameQualifier" type="string" use="optional"/> </attributeGroup> <element name="BaseID" type="saml:BaseIDAbstractType"/> <complexType name="BaseIDAbstractType" abstract="true"> <attributeGroup ref="saml:IDNameQualifiers"/> </complexType> <element name="NameID" type="saml:NameIDType"/> <complexType name="NameIDType"> <simpleContent> <extension base="string"> <attributeGroup ref="saml:IDNameQualifiers"/> <attribute name="Format" type="anyURI" use="optional"/> <attribute name="SPProvidedID" type="string" use="optional"/> </extension> </simpleContent> </complexType> <complexType name="EncryptedElementType"> <sequence> <element ref="xenc:EncryptedData"/> <element ref="xenc:EncryptedKey" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <element name="EncryptedID" type="saml:EncryptedElementType"/> <element name="Issuer" type="saml:NameIDType"/> <element name="AssertionIDRef" type="NCName"/> <element name="AssertionURIRef" type="anyURI"/> <element name="Assertion" type="saml:AssertionType"/> <complexType name="AssertionType"> <sequence> <element ref="saml:Issuer"/> <element ref="ds:Signature" minOccurs="0"/> <element ref="saml:Subject" minOccurs="0"/> <element ref="saml:Conditions" minOccurs="0"/> <element ref="saml:Advice" minOccurs="0"/> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="saml:Statement"/> <element ref="saml:AuthnStatement"/> <element ref="saml:AuthzDecisionStatement"/> <element ref="saml:AttributeStatement"/> </choice> </sequence> <attribute name="Version" type="string" use="required"/> <attribute name="ID" type="ID" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/> </complexType> <element name="Subject" type="saml:SubjectType"/> <complexType name="SubjectType"> <choice> <sequence> <choice> <element ref="saml:BaseID"/> <element ref="saml:NameID"/> <element ref="saml:EncryptedID"/> </choice> <element ref="saml:SubjectConfirmation" minOccurs="0" maxOccurs="unbounded"/> </sequence> <element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/> </choice> </complexType> <element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/> <complexType name="SubjectConfirmationType"> <sequence> <choice minOccurs="0"> <element ref="saml:BaseID"/> <element ref="saml:NameID"/> <element ref="saml:EncryptedID"/> </choice> <element ref="saml:SubjectConfirmationData" minOccurs="0"/> </sequence> <attribute name="Method" type="anyURI" use="required"/> </complexType> <element name="SubjectConfirmationData" type="saml:SubjectConfirmationDataType"/> <complexType name="SubjectConfirmationDataType" mixed="true"> <complexContent> <restriction base="anyType"> <sequence> <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="NotBefore" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/> <attribute name="Recipient" type="anyURI" use="optional"/> <attribute name="InResponseTo" type="NCName" use="optional"/> <attribute name="Address" type="string" use="optional"/> <anyAttribute namespace="##other" processContents="lax"/> </restriction> </complexContent> </complexType> <complexType name="KeyInfoConfirmationDataType" mixed="false"> <complexContent> <restriction base="saml:SubjectConfirmationDataType"> <sequence> <element ref="ds:KeyInfo" maxOccurs="unbounded"/> </sequence> </restriction> </complexContent> </complexType> <element name="Conditions" type="saml:ConditionsType"/> <complexType name="ConditionsType"> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="saml:Condition"/> <element ref="saml:AudienceRestriction"/> <element ref="saml:OneTimeUse"/> <element ref="saml:ProxyRestriction"/> </choice> <attribute name="NotBefore" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/> </complexType> <element name="Condition" type="saml:ConditionAbstractType"/> <complexType name="ConditionAbstractType" abstract="true"/> <element name="AudienceRestriction" type="saml:AudienceRestrictionType"/> <complexType name="AudienceRestrictionType"> <complexContent> <extension base="saml:ConditionAbstractType"> <sequence> <element ref="saml:Audience" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <element name="Audience" type="anyURI"/> <element name="OneTimeUse" type="saml:OneTimeUseType" /> <complexType name="OneTimeUseType"> <complexContent> <extension base="saml:ConditionAbstractType"/> </complexContent> </complexType> <element name="ProxyRestriction" type="saml:ProxyRestrictionType"/> <complexType name="ProxyRestrictionType"> <complexContent> <extension base="saml:ConditionAbstractType"> <sequence> <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="Count" type="nonNegativeInteger" use="optional"/> </extension> </complexContent> </complexType> <element name="Advice" type="saml:AdviceType"/> <complexType name="AdviceType"> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="saml:AssertionIDRef"/> <element ref="saml:AssertionURIRef"/> <element ref="saml:Assertion"/> <element ref="saml:EncryptedAssertion"/> <any namespace="##other" processContents="lax"/> </choice> </complexType> <element name="EncryptedAssertion" type="saml:EncryptedElementType"/> <element name="Statement" type="saml:StatementAbstractType"/> <complexType name="StatementAbstractType" abstract="true"/> <element name="AuthnStatement" type="saml:AuthnStatementType"/> <complexType name="AuthnStatementType"> <complexContent> <extension base="saml:StatementAbstractType"> <sequence> <element ref="saml:SubjectLocality" minOccurs="0"/> <element ref="saml:AuthnContext"/> </sequence> <attribute name="AuthnInstant" type="dateTime" use="required"/> <attribute name="SessionIndex" type="string" use="optional"/> <attribute name="SessionNotOnOrAfter" type="dateTime" use="optional"/> </extension> </complexContent> </complexType> <element name="SubjectLocality" type="saml:SubjectLocalityType"/> <complexType name="SubjectLocalityType"> <attribute name="Address" type="string" use="optional"/> <attribute name="DNSName" type="string" use="optional"/> </complexType> <element name="AuthnContext" type="saml:AuthnContextType"/> <complexType name="AuthnContextType"> <sequence> <choice> <sequence> <element ref="saml:AuthnContextClassRef"/> <choice minOccurs="0"> <element ref="saml:AuthnContextDecl"/> <element ref="saml:AuthnContextDeclRef"/> </choice> </sequence> <choice> <element ref="saml:AuthnContextDecl"/> <element ref="saml:AuthnContextDeclRef"/> </choice> </choice> <element ref="saml:AuthenticatingAuthority" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <element name="AuthnContextClassRef" type="anyURI"/> <element name="AuthnContextDeclRef" type="anyURI"/> <element name="AuthnContextDecl" type="anyType"/> <element name="AuthenticatingAuthority" type="anyURI"/> <element name="AuthzDecisionStatement" type="saml:AuthzDecisionStatementType"/> <complexType name="AuthzDecisionStatementType"> <complexContent> <extension base="saml:StatementAbstractType"> <sequence> <element ref="saml:Action" maxOccurs="unbounded"/> <element ref="saml:Evidence" minOccurs="0"/> </sequence> <attribute name="Resource" type="anyURI" use="required"/> <attribute name="Decision" type="saml:DecisionType" use="required"/> </extension> </complexContent> </complexType> <simpleType name="DecisionType"> <restriction base="string"> <enumeration value="Permit"/> <enumeration value="Deny"/> <enumeration value="Indeterminate"/> </restriction> </simpleType> <element name="Action" type="saml:ActionType"/> <complexType name="ActionType"> <simpleContent> <extension base="string"> <attribute name="Namespace" type="anyURI" use="required"/> </extension> </simpleContent> </complexType> <element name="Evidence" type="saml:EvidenceType"/> <complexType name="EvidenceType"> <choice maxOccurs="unbounded"> <element ref="saml:AssertionIDRef"/> <element ref="saml:AssertionURIRef"/> <element ref="saml:Assertion"/> <element ref="saml:EncryptedAssertion"/> </choice> </complexType> <element name="AttributeStatement" type="saml:AttributeStatementType"/> <complexType name="AttributeStatementType"> <complexContent> <extension base="saml:StatementAbstractType"> <choice maxOccurs="unbounded"> <element ref="saml:Attribute"/> <element ref="saml:EncryptedAttribute"/> </choice> </extension> </complexContent> </complexType> <element name="Attribute" type="saml:AttributeType"/> <complexType name="AttributeType"> <sequence> <element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="Name" type="string" use="required"/> <attribute name="NameFormat" type="anyURI" use="optional"/> <attribute name="FriendlyName" type="string" use="optional"/> <anyAttribute namespace="##other" processContents="lax"/> </complexType> <element name="AttributeValue" type="anyType" nillable="true"/> <element name="EncryptedAttribute" type="saml:EncryptedElementType"/> </schema> vgauth/schemas/xml.xsd 0000644 00000021100 15027404103 0010773 0 ustar 00 <?xml version='1.0'?> <?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?> <xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns ="http://www.w3.org/1999/xhtml" xml:lang="en"> <xs:annotation> <xs:documentation> <div> <h1>About the XML namespace</h1> <div class="bodytext"> <p> This schema document describes the XML namespace, in a form suitable for import by other schema documents. </p> <p> See <a href="http://www.w3.org/XML/1998/namespace.html"> http://www.w3.org/XML/1998/namespace.html</a> and <a href="http://www.w3.org/TR/REC-xml"> http://www.w3.org/TR/REC-xml</a> for information about this namespace. </p> <p> Note that local names in this namespace are intended to be defined only by the World Wide Web Consortium or its subgroups. The names currently defined in this namespace are listed below. They should not be used with conflicting semantics by any Working Group, specification, or document instance. </p> <p> See further below in this document for more information about <a href="#usage">how to refer to this schema document from your own XSD schema documents</a> and about <a href="#nsversioning">the namespace-versioning policy governing this schema document</a>. </p> </div> </div> </xs:documentation> </xs:annotation> <xs:attribute name="lang"> <xs:annotation> <xs:documentation> <div> <h3>lang (as an attribute name)</h3> <p> denotes an attribute whose value is a language code for the natural language of the content of any element; its value is inherited. This name is reserved by virtue of its definition in the XML specification.</p> </div> <div> <h4>Notes</h4> <p> Attempting to install the relevant ISO 2- and 3-letter codes as the enumerated possible values is probably never going to be a realistic possibility. </p> <p> See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt"> http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a> and the IANA language subtag registry at <a href="http://www.iana.org/assignments/language-subtag-registry"> http://www.iana.org/assignments/language-subtag-registry</a> for further information. </p> <p> The union allows for the 'un-declaration' of xml:lang with the empty string. </p> </div> </xs:documentation> </xs:annotation> <xs:simpleType> <xs:union memberTypes="xs:language"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType> </xs:union> </xs:simpleType> </xs:attribute> <xs:attribute name="space"> <xs:annotation> <xs:documentation> <div> <h3>space (as an attribute name)</h3> <p> denotes an attribute whose value is a keyword indicating what whitespace processing discipline is intended for the content of the element; its value is inherited. This name is reserved by virtue of its definition in the XML specification.</p> </div> </xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:NCName"> <xs:enumeration value="default"/> <xs:enumeration value="preserve"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="base" type="xs:anyURI"> <xs:annotation> <xs:documentation> <div> <h3>base (as an attribute name)</h3> <p> denotes an attribute whose value provides a URI to be used as the base for interpreting any relative URIs in the scope of the element on which it appears; its value is inherited. This name is reserved by virtue of its definition in the XML Base specification.</p> <p> See <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a> for information about this attribute. </p> </div> </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="id" type="xs:ID"> <xs:annotation> <xs:documentation> <div> <h3>id (as an attribute name)</h3> <p> denotes an attribute whose value should be interpreted as if declared to be of type ID. This name is reserved by virtue of its definition in the xml:id specification.</p> <p> See <a href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a> for information about this attribute. </p> </div> </xs:documentation> </xs:annotation> </xs:attribute> <xs:attributeGroup name="specialAttrs"> <xs:attribute ref="xml:base"/> <xs:attribute ref="xml:lang"/> <xs:attribute ref="xml:space"/> <xs:attribute ref="xml:id"/> </xs:attributeGroup> <xs:annotation> <xs:documentation> <div> <h3>Father (in any context at all)</h3> <div class="bodytext"> <p> denotes Jon Bosak, the chair of the original XML Working Group. This name is reserved by the following decision of the W3C XML Plenary and XML Coordination groups: </p> <blockquote> <p> In appreciation for his vision, leadership and dedication the W3C XML Plenary on this 10th day of February, 2000, reserves for Jon Bosak in perpetuity the XML name "xml:Father". </p> </blockquote> </div> </div> </xs:documentation> </xs:annotation> <xs:annotation> <xs:documentation> <div xml:id="usage" id="usage"> <h2><a name="usage">About this schema document</a></h2> <div class="bodytext"> <p> This schema defines attributes and an attribute group suitable for use by schemas wishing to allow <code>xml:base</code>, <code>xml:lang</code>, <code>xml:space</code> or <code>xml:id</code> attributes on elements they define. </p> <p> To enable this, such a schema must import this schema for the XML namespace, e.g. as follows: </p> <pre> <schema . . .> . . . <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> </pre> <p> or </p> <pre> <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2009/01/xml.xsd"/> </pre> <p> Subsequently, qualified reference to any of the attributes or the group defined below will have the desired effect, e.g. </p> <pre> <type . . .> . . . <attributeGroup ref="xml:specialAttrs"/> </pre> <p> will define a type which will schema-validate an instance element with any of those attributes. </p> </div> </div> </xs:documentation> </xs:annotation> <xs:annotation> <xs:documentation> <div id="nsversioning" xml:id="nsversioning"> <h2><a name="nsversioning">Versioning policy for this schema document</a></h2> <div class="bodytext"> <p> In keeping with the XML Schema WG's standard versioning policy, this schema document will persist at <a href="http://www.w3.org/2009/01/xml.xsd"> http://www.w3.org/2009/01/xml.xsd</a>. </p> <p> At the date of issue it can also be found at <a href="http://www.w3.org/2001/xml.xsd"> http://www.w3.org/2001/xml.xsd</a>. </p> <p> The schema document at that URI may however change in the future, in order to remain compatible with the latest version of XML Schema itself, or with the XML namespace itself. In other words, if the XML Schema or XML namespaces change, the version of this document at <a href="http://www.w3.org/2001/xml.xsd"> http://www.w3.org/2001/xml.xsd </a> will change accordingly; the version at <a href="http://www.w3.org/2009/01/xml.xsd"> http://www.w3.org/2009/01/xml.xsd </a> will not change. </p> <p> Previous dated (and unchanging) versions of this schema document are at: </p> <ul> <li><a href="http://www.w3.org/2009/01/xml.xsd"> http://www.w3.org/2009/01/xml.xsd</a></li> <li><a href="http://www.w3.org/2007/08/xml.xsd"> http://www.w3.org/2007/08/xml.xsd</a></li> <li><a href="http://www.w3.org/2004/10/xml.xsd"> http://www.w3.org/2004/10/xml.xsd</a></li> <li><a href="http://www.w3.org/2001/03/xml.xsd"> http://www.w3.org/2001/03/xml.xsd</a></li> </ul> </div> </div> </xs:documentation> </xs:annotation> </xs:schema> vgauth/schemas/XMLSchema.xsd 0000644 00000250643 15027404103 0011774 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <!-- XML Schema schema for XML Schemas: Part 1: Structures --> <!-- Note this schema is NOT the normative structures schema. --> <!-- The prose copy in the structures REC is the normative --> <!-- version (which shouldn't differ from this one except for --> <!-- this comment and entity expansions, but just in case --> <!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [ <!-- provide ID type information even for parsers which only read the internal subset --> <!ATTLIST xs:schema id ID #IMPLIED> <!ATTLIST xs:complexType id ID #IMPLIED> <!ATTLIST xs:complexContent id ID #IMPLIED> <!ATTLIST xs:simpleContent id ID #IMPLIED> <!ATTLIST xs:extension id ID #IMPLIED> <!ATTLIST xs:element id ID #IMPLIED> <!ATTLIST xs:group id ID #IMPLIED> <!ATTLIST xs:all id ID #IMPLIED> <!ATTLIST xs:choice id ID #IMPLIED> <!ATTLIST xs:sequence id ID #IMPLIED> <!ATTLIST xs:any id ID #IMPLIED> <!ATTLIST xs:anyAttribute id ID #IMPLIED> <!ATTLIST xs:attribute id ID #IMPLIED> <!ATTLIST xs:attributeGroup id ID #IMPLIED> <!ATTLIST xs:unique id ID #IMPLIED> <!ATTLIST xs:key id ID #IMPLIED> <!ATTLIST xs:keyref id ID #IMPLIED> <!ATTLIST xs:selector id ID #IMPLIED> <!ATTLIST xs:field id ID #IMPLIED> <!ATTLIST xs:include id ID #IMPLIED> <!ATTLIST xs:import id ID #IMPLIED> <!ATTLIST xs:redefine id ID #IMPLIED> <!ATTLIST xs:notation id ID #IMPLIED> <!-- keep this schema XML1.0 DTD valid --> <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'> <!ELEMENT hfp:hasFacet EMPTY> <!ATTLIST hfp:hasFacet name NMTOKEN #REQUIRED> <!ELEMENT hfp:hasProperty EMPTY> <!ATTLIST hfp:hasProperty name NMTOKEN #REQUIRED value CDATA #REQUIRED> <!-- Make sure that processors that do not read the external subset will know about the various IDs we declare --> <!ATTLIST xs:simpleType id ID #IMPLIED> <!ATTLIST xs:maxExclusive id ID #IMPLIED> <!ATTLIST xs:minExclusive id ID #IMPLIED> <!ATTLIST xs:maxInclusive id ID #IMPLIED> <!ATTLIST xs:minInclusive id ID #IMPLIED> <!ATTLIST xs:totalDigits id ID #IMPLIED> <!ATTLIST xs:fractionDigits id ID #IMPLIED> <!ATTLIST xs:length id ID #IMPLIED> <!ATTLIST xs:minLength id ID #IMPLIED> <!ATTLIST xs:maxLength id ID #IMPLIED> <!ATTLIST xs:enumeration id ID #IMPLIED> <!ATTLIST xs:pattern id ID #IMPLIED> <!ATTLIST xs:appinfo id ID #IMPLIED> <!ATTLIST xs:documentation id ID #IMPLIED> <!ATTLIST xs:list id ID #IMPLIED> <!ATTLIST xs:union id ID #IMPLIED> ]> <xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"> <xs:annotation> <xs:documentation> Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp </xs:documentation> </xs:annotation> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html"> The schema corresponding to this document is normative, with respect to the syntactic constraints it expresses in the XML Schema language. The documentation (within <documentation> elements) below, is not normative, but rather highlights important aspects of the W3C Recommendation of which this is a part</xs:documentation> </xs:annotation> <xs:annotation> <xs:documentation> The simpleType element and all of its members are defined towards the end of this schema document</xs:documentation> </xs:annotation> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"> <xs:annotation> <xs:documentation> Get access to the xml: attribute groups for xml:lang as declared on 'schema' and 'documentation' below </xs:documentation> </xs:annotation> </xs:import> <xs:complexType name="openAttrs"> <xs:annotation> <xs:documentation> This type is extended by almost all schema types to allow attributes from other namespaces to be added to user schemas. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="annotated"> <xs:annotation> <xs:documentation> This type is extended by all types which allow annotation other than <schema> itself </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="xs:openAttrs"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:ID"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:group name="schemaTop"> <xs:annotation> <xs:documentation> This group is for the elements which occur freely at the top level of schemas. All of their types are based on the "annotated" type by extension.</xs:documentation> </xs:annotation> <xs:choice> <xs:group ref="xs:redefinable"/> <xs:element ref="xs:element"/> <xs:element ref="xs:attribute"/> <xs:element ref="xs:notation"/> </xs:choice> </xs:group> <xs:group name="redefinable"> <xs:annotation> <xs:documentation> This group is for the elements which can self-redefine (see <redefine> below).</xs:documentation> </xs:annotation> <xs:choice> <xs:element ref="xs:simpleType"/> <xs:element ref="xs:complexType"/> <xs:element ref="xs:group"/> <xs:element ref="xs:attributeGroup"/> </xs:choice> </xs:group> <xs:simpleType name="formChoice"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> </xs:annotation> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="qualified"/> <xs:enumeration value="unqualified"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="reducedDerivationControl"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> </xs:annotation> <xs:restriction base="xs:derivationControl"> <xs:enumeration value="extension"/> <xs:enumeration value="restriction"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="derivationSet"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> <xs:documentation> #all or (possibly empty) subset of {extension, restriction}</xs:documentation> </xs:annotation> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="#all"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:list itemType="xs:reducedDerivationControl"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="typeDerivationControl"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> </xs:annotation> <xs:restriction base="xs:derivationControl"> <xs:enumeration value="extension"/> <xs:enumeration value="restriction"/> <xs:enumeration value="list"/> <xs:enumeration value="union"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="fullDerivationSet"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> <xs:documentation> #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation> </xs:annotation> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="#all"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:list itemType="xs:typeDerivationControl"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:element name="schema" id="schema"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:openAttrs"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="xs:include"/> <xs:element ref="xs:import"/> <xs:element ref="xs:redefine"/> <xs:element ref="xs:annotation"/> </xs:choice> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:group ref="xs:schemaTop"/> <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:sequence> <xs:attribute name="targetNamespace" type="xs:anyURI"/> <xs:attribute name="version" type="xs:token"/> <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/> <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/> <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/> <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/> <xs:attribute name="id" type="xs:ID"/> <xs:attribute ref="xml:lang"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:key name="element"> <xs:selector xpath="xs:element"/> <xs:field xpath="@name"/> </xs:key> <xs:key name="attribute"> <xs:selector xpath="xs:attribute"/> <xs:field xpath="@name"/> </xs:key> <xs:key name="type"> <xs:selector xpath="xs:complexType|xs:simpleType"/> <xs:field xpath="@name"/> </xs:key> <xs:key name="group"> <xs:selector xpath="xs:group"/> <xs:field xpath="@name"/> </xs:key> <xs:key name="attributeGroup"> <xs:selector xpath="xs:attributeGroup"/> <xs:field xpath="@name"/> </xs:key> <xs:key name="notation"> <xs:selector xpath="xs:notation"/> <xs:field xpath="@name"/> </xs:key> <xs:key name="identityConstraint"> <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/> <xs:field xpath="@name"/> </xs:key> </xs:element> <xs:simpleType name="allNNI"> <xs:annotation><xs:documentation> for maxOccurs</xs:documentation></xs:annotation> <xs:union memberTypes="xs:nonNegativeInteger"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="unbounded"/> </xs:restriction> </xs:simpleType> </xs:union> </xs:simpleType> <xs:attributeGroup name="occurs"> <xs:annotation><xs:documentation> for all particles</xs:documentation></xs:annotation> <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/> <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/> </xs:attributeGroup> <xs:attributeGroup name="defRef"> <xs:annotation><xs:documentation> for element, group and attributeGroup, which both define and reference</xs:documentation></xs:annotation> <xs:attribute name="name" type="xs:NCName"/> <xs:attribute name="ref" type="xs:QName"/> </xs:attributeGroup> <xs:group name="typeDefParticle"> <xs:annotation> <xs:documentation> 'complexType' uses this</xs:documentation></xs:annotation> <xs:choice> <xs:element name="group" type="xs:groupRef"/> <xs:element ref="xs:all"/> <xs:element ref="xs:choice"/> <xs:element ref="xs:sequence"/> </xs:choice> </xs:group> <xs:group name="nestedParticle"> <xs:choice> <xs:element name="element" type="xs:localElement"/> <xs:element name="group" type="xs:groupRef"/> <xs:element ref="xs:choice"/> <xs:element ref="xs:sequence"/> <xs:element ref="xs:any"/> </xs:choice> </xs:group> <xs:group name="particle"> <xs:choice> <xs:element name="element" type="xs:localElement"/> <xs:element name="group" type="xs:groupRef"/> <xs:element ref="xs:all"/> <xs:element ref="xs:choice"/> <xs:element ref="xs:sequence"/> <xs:element ref="xs:any"/> </xs:choice> </xs:group> <xs:complexType name="attribute"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/> </xs:sequence> <xs:attributeGroup ref="xs:defRef"/> <xs:attribute name="type" type="xs:QName"/> <xs:attribute name="use" use="optional" default="optional"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="prohibited"/> <xs:enumeration value="optional"/> <xs:enumeration value="required"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="default" type="xs:string"/> <xs:attribute name="fixed" type="xs:string"/> <xs:attribute name="form" type="xs:formChoice"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="topLevelAttribute"> <xs:complexContent> <xs:restriction base="xs:attribute"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/> </xs:sequence> <xs:attribute name="ref" use="prohibited"/> <xs:attribute name="form" use="prohibited"/> <xs:attribute name="use" use="prohibited"/> <xs:attribute name="name" use="required" type="xs:NCName"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:group name="attrDecls"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="attribute" type="xs:attribute"/> <xs:element name="attributeGroup" type="xs:attributeGroupRef"/> </xs:choice> <xs:element ref="xs:anyAttribute" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/> </xs:annotation> </xs:element> <xs:group name="complexTypeModel"> <xs:choice> <xs:element ref="xs:simpleContent"/> <xs:element ref="xs:complexContent"/> <xs:sequence> <xs:annotation> <xs:documentation> This branch is short for <complexContent> <restriction base="xs:anyType"> ... </restriction> </complexContent></xs:documentation> </xs:annotation> <xs:group ref="xs:typeDefParticle" minOccurs="0"/> <xs:group ref="xs:attrDecls"/> </xs:sequence> </xs:choice> </xs:group> <xs:complexType name="complexType" abstract="true"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:group ref="xs:complexTypeModel"/> <xs:attribute name="name" type="xs:NCName"> <xs:annotation> <xs:documentation> Will be restricted to required or forbidden</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false"> <xs:annotation> <xs:documentation> Not allowed if simpleContent child is chosen. May be overriden by setting on complexContent child.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/> <xs:attribute name="final" type="xs:derivationSet"/> <xs:attribute name="block" type="xs:derivationSet"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="topLevelComplexType"> <xs:complexContent> <xs:restriction base="xs:complexType"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:complexTypeModel"/> </xs:sequence> <xs:attribute name="name" type="xs:NCName" use="required"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="localComplexType"> <xs:complexContent> <xs:restriction base="xs:complexType"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:complexTypeModel"/> </xs:sequence> <xs:attribute name="name" use="prohibited"/> <xs:attribute name="abstract" use="prohibited"/> <xs:attribute name="final" use="prohibited"/> <xs:attribute name="block" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="restrictionType"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:choice minOccurs="0"> <xs:group ref="xs:typeDefParticle"/> <xs:group ref="xs:simpleRestrictionModel"/> </xs:choice> <xs:group ref="xs:attrDecls"/> </xs:sequence> <xs:attribute name="base" type="xs:QName" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="complexRestrictionType"> <xs:complexContent> <xs:restriction base="xs:restrictionType"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0"> <xs:annotation> <xs:documentation>This choice is added simply to make this a valid restriction per the REC</xs:documentation> </xs:annotation> <xs:group ref="xs:typeDefParticle"/> </xs:choice> <xs:group ref="xs:attrDecls"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="extensionType"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:group ref="xs:typeDefParticle" minOccurs="0"/> <xs:group ref="xs:attrDecls"/> </xs:sequence> <xs:attribute name="base" type="xs:QName" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="complexContent" id="complexContent"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:choice> <xs:element name="restriction" type="xs:complexRestrictionType"/> <xs:element name="extension" type="xs:extensionType"/> </xs:choice> <xs:attribute name="mixed" type="xs:boolean"> <xs:annotation> <xs:documentation> Overrides any setting on complexType parent.</xs:documentation> </xs:annotation> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:complexType name="simpleRestrictionType"> <xs:complexContent> <xs:restriction base="xs:restrictionType"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0"> <xs:annotation> <xs:documentation>This choice is added simply to make this a valid restriction per the REC</xs:documentation> </xs:annotation> <xs:group ref="xs:simpleRestrictionModel"/> </xs:choice> <xs:group ref="xs:attrDecls"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="simpleExtensionType"> <xs:complexContent> <xs:restriction base="xs:extensionType"> <xs:sequence> <xs:annotation> <xs:documentation> No typeDefParticle group reference</xs:documentation> </xs:annotation> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:attrDecls"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="simpleContent" id="simpleContent"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:choice> <xs:element name="restriction" type="xs:simpleRestrictionType"/> <xs:element name="extension" type="xs:simpleExtensionType"/> </xs:choice> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/> </xs:annotation> </xs:element> <xs:simpleType name="blockSet"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> <xs:documentation> #all or (possibly empty) subset of {substitution, extension, restriction}</xs:documentation> </xs:annotation> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="#all"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:list> <xs:simpleType> <xs:restriction base="xs:derivationControl"> <xs:enumeration value="extension"/> <xs:enumeration value="restriction"/> <xs:enumeration value="substitution"/> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> </xs:union> </xs:simpleType> <xs:complexType name="element" abstract="true"> <xs:annotation> <xs:documentation> The element element can be used either at the top level to define an element-type binding globally, or within a content model to either reference a globally-defined element or type or declare an element-type binding locally. The ref form is not allowed at the top level.</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:choice minOccurs="0"> <xs:element name="simpleType" type="xs:localSimpleType"/> <xs:element name="complexType" type="xs:localComplexType"/> </xs:choice> <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attributeGroup ref="xs:defRef"/> <xs:attribute name="type" type="xs:QName"/> <xs:attribute name="substitutionGroup" type="xs:QName"/> <xs:attributeGroup ref="xs:occurs"/> <xs:attribute name="default" type="xs:string"/> <xs:attribute name="fixed" type="xs:string"/> <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/> <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/> <xs:attribute name="final" type="xs:derivationSet"/> <xs:attribute name="block" type="xs:blockSet"/> <xs:attribute name="form" type="xs:formChoice"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="topLevelElement"> <xs:complexContent> <xs:restriction base="xs:element"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0"> <xs:element name="simpleType" type="xs:localSimpleType"/> <xs:element name="complexType" type="xs:localComplexType"/> </xs:choice> <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="ref" use="prohibited"/> <xs:attribute name="form" use="prohibited"/> <xs:attribute name="minOccurs" use="prohibited"/> <xs:attribute name="maxOccurs" use="prohibited"/> <xs:attribute name="name" use="required" type="xs:NCName"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="localElement"> <xs:complexContent> <xs:restriction base="xs:element"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0"> <xs:element name="simpleType" type="xs:localSimpleType"/> <xs:element name="complexType" type="xs:localComplexType"/> </xs:choice> <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="substitutionGroup" use="prohibited"/> <xs:attribute name="final" use="prohibited"/> <xs:attribute name="abstract" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="element" type="xs:topLevelElement" id="element"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/> </xs:annotation> </xs:element> <xs:complexType name="group" abstract="true"> <xs:annotation> <xs:documentation> group type for explicit groups, named top-level groups and group references</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/> <xs:attributeGroup ref="xs:defRef"/> <xs:attributeGroup ref="xs:occurs"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="realGroup"> <xs:complexContent> <xs:restriction base="xs:group"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0" maxOccurs="1"> <xs:element ref="xs:all"/> <xs:element ref="xs:choice"/> <xs:element ref="xs:sequence"/> </xs:choice> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="namedGroup"> <xs:complexContent> <xs:restriction base="xs:realGroup"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="1" maxOccurs="1"> <xs:element name="all"> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:all"> <xs:group ref="xs:allModel"/> <xs:attribute name="minOccurs" use="prohibited"/> <xs:attribute name="maxOccurs" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="choice" type="xs:simpleExplicitGroup"/> <xs:element name="sequence" type="xs:simpleExplicitGroup"/> </xs:choice> </xs:sequence> <xs:attribute name="name" use="required" type="xs:NCName"/> <xs:attribute name="ref" use="prohibited"/> <xs:attribute name="minOccurs" use="prohibited"/> <xs:attribute name="maxOccurs" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="groupRef"> <xs:complexContent> <xs:restriction base="xs:realGroup"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="ref" use="required" type="xs:QName"/> <xs:attribute name="name" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="explicitGroup"> <xs:annotation> <xs:documentation> group type for the three kinds of group</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="xs:group"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:NCName" use="prohibited"/> <xs:attribute name="ref" type="xs:QName" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="simpleExplicitGroup"> <xs:complexContent> <xs:restriction base="xs:explicitGroup"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="minOccurs" use="prohibited"/> <xs:attribute name="maxOccurs" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:group name="allModel"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>This choice with min/max is here to avoid a pblm with the Elt:All/Choice/Seq Particle derivation constraint</xs:documentation> </xs:annotation> <xs:element name="element" type="xs:narrowMaxMin"/> </xs:choice> </xs:sequence> </xs:group> <xs:complexType name="narrowMaxMin"> <xs:annotation> <xs:documentation>restricted max/min</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="xs:localElement"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:choice minOccurs="0"> <xs:element name="simpleType" type="xs:localSimpleType"/> <xs:element name="complexType" type="xs:localComplexType"/> </xs:choice> <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="minOccurs" use="optional" default="1"> <xs:simpleType> <xs:restriction base="xs:nonNegativeInteger"> <xs:enumeration value="0"/> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="maxOccurs" use="optional" default="1"> <xs:simpleType> <xs:restriction base="xs:allNNI"> <xs:enumeration value="0"/> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="all"> <xs:annotation> <xs:documentation> Only elements allowed inside</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="xs:explicitGroup"> <xs:group ref="xs:allModel"/> <xs:attribute name="minOccurs" use="optional" default="1"> <xs:simpleType> <xs:restriction base="xs:nonNegativeInteger"> <xs:enumeration value="0"/> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="maxOccurs" use="optional" default="1"> <xs:simpleType> <xs:restriction base="xs:allNNI"> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="all" id="all" type="xs:all"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/> </xs:annotation> </xs:element> <xs:element name="choice" type="xs:explicitGroup" id="choice"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/> </xs:annotation> </xs:element> <xs:element name="sequence" type="xs:explicitGroup" id="sequence"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/> </xs:annotation> </xs:element> <xs:element name="group" type="xs:namedGroup" id="group"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/> </xs:annotation> </xs:element> <xs:complexType name="wildcard"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/> <xs:attribute name="processContents" use="optional" default="strict"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="skip"/> <xs:enumeration value="lax"/> <xs:enumeration value="strict"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="any" id="any"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:wildcard"> <xs:attributeGroup ref="xs:occurs"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:annotation> <xs:documentation> simple type for the value of the 'namespace' attr of 'any' and 'anyAttribute'</xs:documentation> </xs:annotation> <xs:annotation> <xs:documentation> Value is ##any - - any non-conflicting WFXML/attribute at all ##other - - any non-conflicting WFXML/attribute from namespace other than targetNS ##local - - any unqualified non-conflicting WFXML/attribute one or - - any non-conflicting WFXML/attribute from more URI the listed namespaces references (space separated) ##targetNamespace or ##local may appear in the above list, to refer to the targetNamespace of the enclosing schema or an absent targetNamespace respectively</xs:documentation> </xs:annotation> <xs:simpleType name="namespaceList"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> </xs:annotation> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="##any"/> <xs:enumeration value="##other"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union memberTypes="xs:anyURI"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="##targetNamespace"/> <xs:enumeration value="##local"/> </xs:restriction> </xs:simpleType> </xs:union> </xs:simpleType> </xs:list> </xs:simpleType> </xs:union> </xs:simpleType> <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/> </xs:annotation> </xs:element> <xs:complexType name="attributeGroup" abstract="true"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:group ref="xs:attrDecls"/> <xs:attributeGroup ref="xs:defRef"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="namedAttributeGroup"> <xs:complexContent> <xs:restriction base="xs:attributeGroup"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:attrDecls"/> </xs:sequence> <xs:attribute name="name" use="required" type="xs:NCName"/> <xs:attribute name="ref" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="attributeGroupRef"> <xs:complexContent> <xs:restriction base="xs:attributeGroup"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="ref" use="required" type="xs:QName"/> <xs:attribute name="name" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/> </xs:annotation> </xs:element> <xs:element name="include" id="include"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="redefine" id="redefine"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:openAttrs"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="xs:annotation"/> <xs:group ref="xs:redefinable"/> </xs:choice> <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/> <xs:attribute name="id" type="xs:ID"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="import" id="import"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="namespace" type="xs:anyURI"/> <xs:attribute name="schemaLocation" type="xs:anyURI"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="selector" id="selector"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="xpath" use="required"> <xs:simpleType> <xs:annotation> <xs:documentation>A subset of XPath expressions for use in selectors</xs:documentation> <xs:documentation>A utility type, not for public use</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:annotation> <xs:documentation>The following pattern is intended to allow XPath expressions per the following EBNF: Selector ::= Path ( '|' Path )* Path ::= ('.//')? Step ( '/' Step )* Step ::= '.' | NameTest NameTest ::= QName | '*' | NCName ':' '*' child:: is also allowed </xs:documentation> </xs:annotation> <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*"> </xs:pattern> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="field" id="field"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="xpath" use="required"> <xs:simpleType> <xs:annotation> <xs:documentation>A subset of XPath expressions for use in fields</xs:documentation> <xs:documentation>A utility type, not for public use</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:annotation> <xs:documentation>The following pattern is intended to allow XPath expressions per the same EBNF as for selector, with the following change: Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest ) </xs:documentation> </xs:annotation> <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*"> </xs:pattern> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:complexType name="keybase"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:element ref="xs:selector"/> <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:NCName" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:group name="identityConstraint"> <xs:annotation> <xs:documentation>The three kinds of identity constraints, all with type of or derived from 'keybase'. </xs:documentation> </xs:annotation> <xs:choice> <xs:element ref="xs:unique"/> <xs:element ref="xs:key"/> <xs:element ref="xs:keyref"/> </xs:choice> </xs:group> <xs:element name="unique" type="xs:keybase" id="unique"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/> </xs:annotation> </xs:element> <xs:element name="key" type="xs:keybase" id="key"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/> </xs:annotation> </xs:element> <xs:element name="keyref" id="keyref"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:keybase"> <xs:attribute name="refer" type="xs:QName" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="notation" id="notation"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="name" type="xs:NCName" use="required"/> <xs:attribute name="public" type="xs:public"/> <xs:attribute name="system" type="xs:anyURI"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:simpleType name="public"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> <xs:documentation> A public identifier, per ISO 8879</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"/> </xs:simpleType> <xs:element name="appinfo" id="appinfo"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/> </xs:annotation> <xs:complexType mixed="true"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:any processContents="lax"/> </xs:sequence> <xs:attribute name="source" type="xs:anyURI"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:element> <xs:element name="documentation" id="documentation"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/> </xs:annotation> <xs:complexType mixed="true"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:any processContents="lax"/> </xs:sequence> <xs:attribute name="source" type="xs:anyURI"/> <xs:attribute ref="xml:lang"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:element> <xs:element name="annotation" id="annotation"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="xs:openAttrs"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="xs:appinfo"/> <xs:element ref="xs:documentation"/> </xs:choice> <xs:attribute name="id" type="xs:ID"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:annotation> <xs:documentation> notations for use within XML Schema schemas</xs:documentation> </xs:annotation> <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/> <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/> <xs:complexType name="anyType" mixed="true"> <xs:annotation> <xs:documentation> Not the real urType, but as close an approximation as we can get in the XML representation</xs:documentation> </xs:annotation> <xs:sequence> <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/> </xs:sequence> <xs:anyAttribute processContents="lax"/> </xs:complexType> <xs:annotation> <xs:documentation> First the built-in primitive datatypes. These definitions are for information only, the real built-in definitions are magic. </xs:documentation> <xs:documentation> For each built-in datatype in this schema (both primitive and derived) can be uniquely addressed via a URI constructed as follows: 1) the base URI is the URI of the XML Schema namespace 2) the fragment identifier is the name of the datatype For example, to address the int datatype, the URI is: http://www.w3.org/2001/XMLSchema#int Additionally, each facet definition element can be uniquely addressed via a URI constructed as follows: 1) the base URI is the URI of the XML Schema namespace 2) the fragment identifier is the name of the facet For example, to address the maxInclusive facet, the URI is: http://www.w3.org/2001/XMLSchema#maxInclusive Additionally, each facet usage in a built-in datatype definition can be uniquely addressed via a URI constructed as follows: 1) the base URI is the URI of the XML Schema namespace 2) the fragment identifier is the name of the datatype, followed by a period (".") followed by the name of the facet For example, to address the usage of the maxInclusive facet in the definition of int, the URI is: http://www.w3.org/2001/XMLSchema#int.maxInclusive </xs:documentation> </xs:annotation> <xs:simpleType name="string" id="string"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="preserve" id="string.preserve"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="boolean" id="boolean"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="finite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="boolean.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="float" id="float"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="total"/> <hfp:hasProperty name="bounded" value="true"/> <hfp:hasProperty name="cardinality" value="finite"/> <hfp:hasProperty name="numeric" value="true"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="float.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="double" id="double"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="total"/> <hfp:hasProperty name="bounded" value="true"/> <hfp:hasProperty name="cardinality" value="finite"/> <hfp:hasProperty name="numeric" value="true"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="double.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="decimal" id="decimal"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="totalDigits"/> <hfp:hasFacet name="fractionDigits"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="total"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="true"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="decimal.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="duration" id="duration"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="duration.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="dateTime" id="dateTime"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="time" id="time"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="time.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="date" id="date"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="date.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="gYearMonth" id="gYearMonth"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="gYearMonth.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="gYear" id="gYear"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="gYear.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="gMonthDay" id="gMonthDay"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="gMonthDay.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="gDay" id="gDay"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="gDay.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="gMonth" id="gMonth"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="maxInclusive"/> <hfp:hasFacet name="maxExclusive"/> <hfp:hasFacet name="minInclusive"/> <hfp:hasFacet name="minExclusive"/> <hfp:hasProperty name="ordered" value="partial"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="gMonth.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="hexBinary" id="hexBinary"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="hexBinary.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="base64Binary" id="base64Binary"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="base64Binary.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="anyURI" id="anyURI"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="anyURI.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="QName" id="QName"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName"/> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="QName.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="NOTATION" id="NOTATION"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="pattern"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/> <xs:documentation> NOTATION cannot be used directly in a schema; rather a type must be derived from it by specifying at least one enumeration facet whose value is the name of a NOTATION declared in the schema. </xs:documentation> </xs:annotation> <xs:restriction base="xs:anySimpleType"> <xs:whiteSpace value="collapse" fixed="true" id="NOTATION.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:annotation> <xs:documentation> Now the derived primitive types </xs:documentation> </xs:annotation> <xs:simpleType name="normalizedString" id="normalizedString"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/> </xs:annotation> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="token" id="token"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token"/> </xs:annotation> <xs:restriction base="xs:normalizedString"> <xs:whiteSpace value="collapse" id="token.whiteSpace"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="language" id="language"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language"/> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern"> <xs:annotation> <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt"> pattern specifies the content of section 2.12 of XML 1.0e2 and RFC 3066 (Revised version of RFC 1766). </xs:documentation> </xs:annotation> </xs:pattern> </xs:restriction> </xs:simpleType> <xs:simpleType name="IDREFS" id="IDREFS"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="pattern"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/> </xs:annotation> <xs:restriction> <xs:simpleType> <xs:list itemType="xs:IDREF"/> </xs:simpleType> <xs:minLength value="1" id="IDREFS.minLength"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ENTITIES" id="ENTITIES"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="pattern"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/> </xs:annotation> <xs:restriction> <xs:simpleType> <xs:list itemType="xs:ENTITY"/> </xs:simpleType> <xs:minLength value="1" id="ENTITIES.minLength"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="NMTOKEN" id="NMTOKEN"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="\c+" id="NMTOKEN.pattern"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken"> pattern matches production 7 from the XML spec </xs:documentation> </xs:annotation> </xs:pattern> </xs:restriction> </xs:simpleType> <xs:simpleType name="NMTOKENS" id="NMTOKENS"> <xs:annotation> <xs:appinfo> <hfp:hasFacet name="length"/> <hfp:hasFacet name="minLength"/> <hfp:hasFacet name="maxLength"/> <hfp:hasFacet name="enumeration"/> <hfp:hasFacet name="whiteSpace"/> <hfp:hasFacet name="pattern"/> <hfp:hasProperty name="ordered" value="false"/> <hfp:hasProperty name="bounded" value="false"/> <hfp:hasProperty name="cardinality" value="countably infinite"/> <hfp:hasProperty name="numeric" value="false"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/> </xs:annotation> <xs:restriction> <xs:simpleType> <xs:list itemType="xs:NMTOKEN"/> </xs:simpleType> <xs:minLength value="1" id="NMTOKENS.minLength"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="Name" id="Name"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name"/> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="\i\c*" id="Name.pattern"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name"> pattern matches production 5 from the XML spec </xs:documentation> </xs:annotation> </xs:pattern> </xs:restriction> </xs:simpleType> <xs:simpleType name="NCName" id="NCName"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName"/> </xs:annotation> <xs:restriction base="xs:Name"> <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName"> pattern matches production 4 from the Namespaces in XML spec </xs:documentation> </xs:annotation> </xs:pattern> </xs:restriction> </xs:simpleType> <xs:simpleType name="ID" id="ID"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID"/> </xs:annotation> <xs:restriction base="xs:NCName"/> </xs:simpleType> <xs:simpleType name="IDREF" id="IDREF"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF"/> </xs:annotation> <xs:restriction base="xs:NCName"/> </xs:simpleType> <xs:simpleType name="ENTITY" id="ENTITY"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/> </xs:annotation> <xs:restriction base="xs:NCName"/> </xs:simpleType> <xs:simpleType name="integer" id="integer"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer"/> </xs:annotation> <xs:restriction base="xs:decimal"> <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/> <xs:pattern value="[\-+]?[0-9]+"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/> </xs:annotation> <xs:restriction base="xs:integer"> <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="negativeInteger" id="negativeInteger"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/> </xs:annotation> <xs:restriction base="xs:nonPositiveInteger"> <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="long" id="long"> <xs:annotation> <xs:appinfo> <hfp:hasProperty name="bounded" value="true"/> <hfp:hasProperty name="cardinality" value="finite"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long"/> </xs:annotation> <xs:restriction base="xs:integer"> <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/> <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="int" id="int"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int"/> </xs:annotation> <xs:restriction base="xs:long"> <xs:minInclusive value="-2147483648" id="int.minInclusive"/> <xs:maxInclusive value="2147483647" id="int.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="short" id="short"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short"/> </xs:annotation> <xs:restriction base="xs:int"> <xs:minInclusive value="-32768" id="short.minInclusive"/> <xs:maxInclusive value="32767" id="short.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="byte" id="byte"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte"/> </xs:annotation> <xs:restriction base="xs:short"> <xs:minInclusive value="-128" id="byte.minInclusive"/> <xs:maxInclusive value="127" id="byte.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/> </xs:annotation> <xs:restriction base="xs:integer"> <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="unsignedLong" id="unsignedLong"> <xs:annotation> <xs:appinfo> <hfp:hasProperty name="bounded" value="true"/> <hfp:hasProperty name="cardinality" value="finite"/> </xs:appinfo> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/> </xs:annotation> <xs:restriction base="xs:nonNegativeInteger"> <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="unsignedInt" id="unsignedInt"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/> </xs:annotation> <xs:restriction base="xs:unsignedLong"> <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="unsignedShort" id="unsignedShort"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/> </xs:annotation> <xs:restriction base="xs:unsignedInt"> <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="unsignedByte" id="unsignedByte"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/> </xs:annotation> <xs:restriction base="xs:unsignedShort"> <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="positiveInteger" id="positiveInteger"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/> </xs:annotation> <xs:restriction base="xs:nonNegativeInteger"> <xs:minInclusive value="1" id="positiveInteger.minInclusive"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="derivationControl"> <xs:annotation> <xs:documentation> A utility type, not for public use</xs:documentation> </xs:annotation> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="substitution"/> <xs:enumeration value="extension"/> <xs:enumeration value="restriction"/> <xs:enumeration value="list"/> <xs:enumeration value="union"/> </xs:restriction> </xs:simpleType> <xs:group name="simpleDerivation"> <xs:choice> <xs:element ref="xs:restriction"/> <xs:element ref="xs:list"/> <xs:element ref="xs:union"/> </xs:choice> </xs:group> <xs:simpleType name="simpleDerivationSet"> <xs:annotation> <xs:documentation> #all or (possibly empty) subset of {restriction, union, list} </xs:documentation> <xs:documentation> A utility type, not for public use</xs:documentation> </xs:annotation> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="#all"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:list> <xs:simpleType> <xs:restriction base="xs:derivationControl"> <xs:enumeration value="list"/> <xs:enumeration value="union"/> <xs:enumeration value="restriction"/> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> </xs:union> </xs:simpleType> <xs:complexType name="simpleType" abstract="true"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:group ref="xs:simpleDerivation"/> <xs:attribute name="final" type="xs:simpleDerivationSet"/> <xs:attribute name="name" type="xs:NCName"> <xs:annotation> <xs:documentation> Can be restricted to required or forbidden </xs:documentation> </xs:annotation> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="topLevelSimpleType"> <xs:complexContent> <xs:restriction base="xs:simpleType"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:simpleDerivation"/> </xs:sequence> <xs:attribute name="name" use="required" type="xs:NCName"> <xs:annotation> <xs:documentation> Required at the top level </xs:documentation> </xs:annotation> </xs:attribute> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="localSimpleType"> <xs:complexContent> <xs:restriction base="xs:simpleType"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> <xs:group ref="xs:simpleDerivation"/> </xs:sequence> <xs:attribute name="name" use="prohibited"> <xs:annotation> <xs:documentation> Forbidden when nested </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="final" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/> </xs:annotation> </xs:element> <xs:group name="facets"> <xs:annotation> <xs:documentation> We should use a substitution group for facets, but that's ruled out because it would allow users to add their own, which we're not ready for yet. </xs:documentation> </xs:annotation> <xs:choice> <xs:element ref="xs:minExclusive"/> <xs:element ref="xs:minInclusive"/> <xs:element ref="xs:maxExclusive"/> <xs:element ref="xs:maxInclusive"/> <xs:element ref="xs:totalDigits"/> <xs:element ref="xs:fractionDigits"/> <xs:element ref="xs:length"/> <xs:element ref="xs:minLength"/> <xs:element ref="xs:maxLength"/> <xs:element ref="xs:enumeration"/> <xs:element ref="xs:whiteSpace"/> <xs:element ref="xs:pattern"/> </xs:choice> </xs:group> <xs:group name="simpleRestrictionModel"> <xs:sequence> <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/> <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:group> <xs:element name="restriction" id="restriction"> <xs:complexType> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-restriction"> base attribute and simpleType child are mutually exclusive, but one or other is required </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:group ref="xs:simpleRestrictionModel"/> <xs:attribute name="base" type="xs:QName" use="optional"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="list" id="list"> <xs:complexType> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-list"> itemType attribute and simpleType child are mutually exclusive, but one or other is required </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/> </xs:sequence> <xs:attribute name="itemType" type="xs:QName" use="optional"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="union" id="union"> <xs:complexType> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-union"> memberTypes attribute must be non-empty or there must be at least one simpleType child </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:sequence> <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="memberTypes" use="optional"> <xs:simpleType> <xs:list itemType="xs:QName"/> </xs:simpleType> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:complexType name="facet"> <xs:complexContent> <xs:extension base="xs:annotated"> <xs:attribute name="value" use="required"/> <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="noFixedFacet"> <xs:complexContent> <xs:restriction base="xs:facet"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="fixed" use="prohibited"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="minExclusive" id="minExclusive" type="xs:facet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/> </xs:annotation> </xs:element> <xs:element name="minInclusive" id="minInclusive" type="xs:facet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/> </xs:annotation> </xs:element> <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/> </xs:annotation> </xs:element> <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/> </xs:annotation> </xs:element> <xs:complexType name="numFacet"> <xs:complexContent> <xs:restriction base="xs:facet"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="totalDigits" id="totalDigits"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:numFacet"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="value" type="xs:positiveInteger" use="required"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/> </xs:annotation> </xs:element> <xs:element name="length" id="length" type="xs:numFacet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"/> </xs:annotation> </xs:element> <xs:element name="minLength" id="minLength" type="xs:numFacet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/> </xs:annotation> </xs:element> <xs:element name="maxLength" id="maxLength" type="xs:numFacet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/> </xs:annotation> </xs:element> <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/> </xs:annotation> </xs:element> <xs:element name="whiteSpace" id="whiteSpace"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:facet"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="value" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="preserve"/> <xs:enumeration value="replace"/> <xs:enumeration value="collapse"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="pattern" id="pattern"> <xs:annotation> <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:noFixedFacet"> <xs:sequence> <xs:element ref="xs:annotation" minOccurs="0"/> </xs:sequence> <xs:attribute name="value" type="xs:string" use="required"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> </xs:schema> vgauth/schemas/datatypes.dtd 0000644 00000014324 15027404103 0012160 0 ustar 00 <!-- DTD for XML Schemas: Part 2: Datatypes $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $ Note this DTD is NOT normative, or even definitive. - - the prose copy in the datatypes REC is the definitive version (which shouldn't differ from this one except for this comment and entity expansions, but just in case) --> <!-- This DTD cannot be used on its own, it is intended only for incorporation in XMLSchema.dtd, q.v. --> <!-- Define all the element names, with optional prefix --> <!ENTITY % simpleType "%p;simpleType"> <!ENTITY % restriction "%p;restriction"> <!ENTITY % list "%p;list"> <!ENTITY % union "%p;union"> <!ENTITY % maxExclusive "%p;maxExclusive"> <!ENTITY % minExclusive "%p;minExclusive"> <!ENTITY % maxInclusive "%p;maxInclusive"> <!ENTITY % minInclusive "%p;minInclusive"> <!ENTITY % totalDigits "%p;totalDigits"> <!ENTITY % fractionDigits "%p;fractionDigits"> <!ENTITY % length "%p;length"> <!ENTITY % minLength "%p;minLength"> <!ENTITY % maxLength "%p;maxLength"> <!ENTITY % enumeration "%p;enumeration"> <!ENTITY % whiteSpace "%p;whiteSpace"> <!ENTITY % pattern "%p;pattern"> <!-- Customisation entities for the ATTLIST of each element type. Define one of these if your schema takes advantage of the anyAttribute='##other' in the schema for schemas --> <!ENTITY % simpleTypeAttrs ""> <!ENTITY % restrictionAttrs ""> <!ENTITY % listAttrs ""> <!ENTITY % unionAttrs ""> <!ENTITY % maxExclusiveAttrs ""> <!ENTITY % minExclusiveAttrs ""> <!ENTITY % maxInclusiveAttrs ""> <!ENTITY % minInclusiveAttrs ""> <!ENTITY % totalDigitsAttrs ""> <!ENTITY % fractionDigitsAttrs ""> <!ENTITY % lengthAttrs ""> <!ENTITY % minLengthAttrs ""> <!ENTITY % maxLengthAttrs ""> <!ENTITY % enumerationAttrs ""> <!ENTITY % whiteSpaceAttrs ""> <!ENTITY % patternAttrs ""> <!-- Define some entities for informative use as attribute types --> <!ENTITY % URIref "CDATA"> <!ENTITY % XPathExpr "CDATA"> <!ENTITY % QName "NMTOKEN"> <!ENTITY % QNames "NMTOKENS"> <!ENTITY % NCName "NMTOKEN"> <!ENTITY % nonNegativeInteger "NMTOKEN"> <!ENTITY % boolean "(true|false)"> <!ENTITY % simpleDerivationSet "CDATA"> <!-- #all or space-separated list drawn from derivationChoice --> <!-- Note that the use of 'facet' below is less restrictive than is really intended: There should in fact be no more than one of each of minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, fractionDigits, length, maxLength, minLength within datatype, and the min- and max- variants of Inclusive and Exclusive are mutually exclusive. On the other hand, pattern and enumeration may repeat. --> <!ENTITY % minBound "(%minInclusive; | %minExclusive;)"> <!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)"> <!ENTITY % bounds "%minBound; | %maxBound;"> <!ENTITY % numeric "%totalDigits; | %fractionDigits;"> <!ENTITY % ordered "%bounds; | %numeric;"> <!ENTITY % unordered "%pattern; | %enumeration; | %whiteSpace; | %length; | %maxLength; | %minLength;"> <!ENTITY % facet "%ordered; | %unordered;"> <!ENTITY % facetAttr "value CDATA #REQUIRED id ID #IMPLIED"> <!ENTITY % fixedAttr "fixed %boolean; #IMPLIED"> <!ENTITY % facetModel "(%annotation;)?"> <!ELEMENT %simpleType; ((%annotation;)?, (%restriction; | %list; | %union;))> <!ATTLIST %simpleType; name %NCName; #IMPLIED final %simpleDerivationSet; #IMPLIED id ID #IMPLIED %simpleTypeAttrs;> <!-- name is required at top level --> <!ELEMENT %restriction; ((%annotation;)?, (%restriction1; | ((%simpleType;)?,(%facet;)*)), (%attrDecls;))> <!ATTLIST %restriction; base %QName; #IMPLIED id ID #IMPLIED %restrictionAttrs;> <!-- base and simpleType child are mutually exclusive, one is required. restriction is shared between simpleType and simpleContent and complexContent (in XMLSchema.xsd). restriction1 is for the latter cases, when this is restricting a complex type, as is attrDecls. --> <!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)> <!ATTLIST %list; itemType %QName; #IMPLIED id ID #IMPLIED %listAttrs;> <!-- itemType and simpleType child are mutually exclusive, one is required --> <!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)> <!ATTLIST %union; id ID #IMPLIED memberTypes %QNames; #IMPLIED %unionAttrs;> <!-- At least one item in memberTypes or one simpleType child is required --> <!ELEMENT %maxExclusive; %facetModel;> <!ATTLIST %maxExclusive; %facetAttr; %fixedAttr; %maxExclusiveAttrs;> <!ELEMENT %minExclusive; %facetModel;> <!ATTLIST %minExclusive; %facetAttr; %fixedAttr; %minExclusiveAttrs;> <!ELEMENT %maxInclusive; %facetModel;> <!ATTLIST %maxInclusive; %facetAttr; %fixedAttr; %maxInclusiveAttrs;> <!ELEMENT %minInclusive; %facetModel;> <!ATTLIST %minInclusive; %facetAttr; %fixedAttr; %minInclusiveAttrs;> <!ELEMENT %totalDigits; %facetModel;> <!ATTLIST %totalDigits; %facetAttr; %fixedAttr; %totalDigitsAttrs;> <!ELEMENT %fractionDigits; %facetModel;> <!ATTLIST %fractionDigits; %facetAttr; %fixedAttr; %fractionDigitsAttrs;> <!ELEMENT %length; %facetModel;> <!ATTLIST %length; %facetAttr; %fixedAttr; %lengthAttrs;> <!ELEMENT %minLength; %facetModel;> <!ATTLIST %minLength; %facetAttr; %fixedAttr; %minLengthAttrs;> <!ELEMENT %maxLength; %facetModel;> <!ATTLIST %maxLength; %facetAttr; %fixedAttr; %maxLengthAttrs;> <!-- This one can be repeated --> <!ELEMENT %enumeration; %facetModel;> <!ATTLIST %enumeration; %facetAttr; %enumerationAttrs;> <!ELEMENT %whiteSpace; %facetModel;> <!ATTLIST %whiteSpace; %facetAttr; %fixedAttr; %whiteSpaceAttrs;> <!-- This one can be repeated --> <!ELEMENT %pattern; %facetModel;> <!ATTLIST %pattern; %facetAttr; %patternAttrs;> resume-vm-default 0000755 00000010426 15027404103 0010033 0 ustar 00 #!/bin/sh ########################################################## # Copyright (c) 2010-2016, 2023 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation version 2.1 and no later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################## ########################################################################## # DO NOT modify this file directly as it will be overwritten the next # time the VMware Tools are installed. ########################################################################## # # statechange.sh # # This script is a refactored version of the legacy power scripts (e.g., # poweron-vm-default). It expects to be installed in their places -- # in other words, `basename "$0"` might be poweron-vm-default. # # Handy reference/shorthand used in this doc/scripts: # TOOLS_CONFDIR ::= Depends on platform and installation settings. Likely # "/etc/vmware-tools" or # "/Library/Application Support/VMware Tools" # powerOp ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and # "resume-vm". # vmwScriptDir ::= $TOOLS_CONFDIR/scripts/vmware # userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d # # End users may install scripts of their own under $userScriptDir. They # are executed in alphabetical order with "$powerOp" as the only argument. # # NB: This directory layout remains to preserve backwards compatibility. End # users are free to write a single script which uses its only parameter # (${powerOp}) as a discriminator, and then install symlinks to it in each # of the ${powerOp}-default.d directories. # # On power-on and resume, VMware's scripts execute before the end user's. On # suspend and power-off, the end user's execute before VMware's. (This way, # VMware stops services only after the user's scripts have finished their # work, and conversely restores the same services before the user's scripts # attempt to use them.) # # Should any script exit non-zero, only its value will be saved to exitCode. # (Any further non-zero exits will have no effect on exitCode.) This script # exits with $exitCode. # # XXX Consider using the available/enabled pattern for VMware's scripts. # # XXX This should be staged as a single executable whereby the desired # power operation is passed in as a parameter. (I.e., one would run # "/path/to/statechange.sh suspend-vm" rather than having to install # statechange.sh as suspend-vm-default.) # echo `date` ": Executing '$0'" # See above. TOOLS_CONFDIR=`dirname "$0"` export TOOLS_CONFDIR # Pull in subroutines like Panic. . "$TOOLS_CONFDIR"/statechange.subr # # RunScripts -- # # Executes scripts installed under $scriptDir. # # Side effects: # exitCode may be incremented. # RunScripts() { scriptDir="$1" if [ -d "$scriptDir" ]; then for scriptFile in "$scriptDir"/*; do if [ -x "$scriptFile" ]; then "$scriptFile" $powerOp exitCode=`expr $exitCode \| $?` fi done fi } # # main -- # # Entry point. See comments at top of file for details. # # Results: # Exits with $exitCode. # main() { # This is confidence checked in the case/esac bit below. powerOp=`basename "$0" | sed 's,-default,,'` exitCode=0 vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware" userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d" case "$powerOp" in poweron-vm|resume-vm) RunScripts "$vmwScriptDir" RunScripts "$userScriptDir" ;; poweroff-vm|suspend-vm) RunScripts "$userScriptDir" RunScripts "$vmwScriptDir" ;; *) Panic "Invalid argument: $powerOp" ;; esac return $exitCode } main poweroff-vm-default 0000755 00000010426 15027404103 0010362 0 ustar 00 #!/bin/sh ########################################################## # Copyright (c) 2010-2016, 2023 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation version 2.1 and no later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################## ########################################################################## # DO NOT modify this file directly as it will be overwritten the next # time the VMware Tools are installed. ########################################################################## # # statechange.sh # # This script is a refactored version of the legacy power scripts (e.g., # poweron-vm-default). It expects to be installed in their places -- # in other words, `basename "$0"` might be poweron-vm-default. # # Handy reference/shorthand used in this doc/scripts: # TOOLS_CONFDIR ::= Depends on platform and installation settings. Likely # "/etc/vmware-tools" or # "/Library/Application Support/VMware Tools" # powerOp ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and # "resume-vm". # vmwScriptDir ::= $TOOLS_CONFDIR/scripts/vmware # userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d # # End users may install scripts of their own under $userScriptDir. They # are executed in alphabetical order with "$powerOp" as the only argument. # # NB: This directory layout remains to preserve backwards compatibility. End # users are free to write a single script which uses its only parameter # (${powerOp}) as a discriminator, and then install symlinks to it in each # of the ${powerOp}-default.d directories. # # On power-on and resume, VMware's scripts execute before the end user's. On # suspend and power-off, the end user's execute before VMware's. (This way, # VMware stops services only after the user's scripts have finished their # work, and conversely restores the same services before the user's scripts # attempt to use them.) # # Should any script exit non-zero, only its value will be saved to exitCode. # (Any further non-zero exits will have no effect on exitCode.) This script # exits with $exitCode. # # XXX Consider using the available/enabled pattern for VMware's scripts. # # XXX This should be staged as a single executable whereby the desired # power operation is passed in as a parameter. (I.e., one would run # "/path/to/statechange.sh suspend-vm" rather than having to install # statechange.sh as suspend-vm-default.) # echo `date` ": Executing '$0'" # See above. TOOLS_CONFDIR=`dirname "$0"` export TOOLS_CONFDIR # Pull in subroutines like Panic. . "$TOOLS_CONFDIR"/statechange.subr # # RunScripts -- # # Executes scripts installed under $scriptDir. # # Side effects: # exitCode may be incremented. # RunScripts() { scriptDir="$1" if [ -d "$scriptDir" ]; then for scriptFile in "$scriptDir"/*; do if [ -x "$scriptFile" ]; then "$scriptFile" $powerOp exitCode=`expr $exitCode \| $?` fi done fi } # # main -- # # Entry point. See comments at top of file for details. # # Results: # Exits with $exitCode. # main() { # This is confidence checked in the case/esac bit below. powerOp=`basename "$0" | sed 's,-default,,'` exitCode=0 vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware" userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d" case "$powerOp" in poweron-vm|resume-vm) RunScripts "$vmwScriptDir" RunScripts "$userScriptDir" ;; poweroff-vm|suspend-vm) RunScripts "$userScriptDir" RunScripts "$vmwScriptDir" ;; *) Panic "Invalid argument: $powerOp" ;; esac return $exitCode } main tools.conf.example 0000644 00000044061 15027404103 0010206 0 ustar 00 # Copyright (c) 2019-2023 VMware, Inc. All rights reserved. # "CAUTION: tools.conf is highly syntax sensitive file. Use extreme caution # while editing it. If modified, it is automatically re-loaded by # VMware Tools services every 5 seconds." # # Lines must not end with trailing white space. [unsetenvironment] # Defines environment variables to be removed from the service reading # the configuration file. Supported formats are: # # 1. <variableName>= # 2. <serviceName>.<variableName>= # # Where <serviceName> refers to the 'vmsvc' and 'vmusr', # <variableName> refers to the name of the environment # variable to be removed. '=' sign after <variableName> # is mandatory to maintain the configuration file syntax. # However, anything after '=' is ignored. # # Case-sensitive behavior is defined by the operating system. # # Note: unsetenvironment group is processed before setenvironment group. # As the service environment is setup at start up time, any changes # in this group require service to be restarted in order to take effect. # # Unsetting PATH for all services: # PATH= # # Unsetting PATH for vmsvc only: # vmsvc.PATH= # # Unsetting PATH for vmusr only: # vmusr.PATH= [setenvironment] # Defines environment variables to be set for the service reading # the configuration file. Supported formats are: # # 1. <variableName>=<variableValue> # 2. <serviceName>.<variableName>=<variableValue> # # Where <serviceName> refers to the 'vmsvc' and 'vmusr', # <variableName> refers to the name of the environment # variable to be set, and <variableValue> refers to the # value to be assigned to the environment variable. # # Case-sensitive behavior is defined by the operating system. # # Note: setenvironment group is processed after unsetenvironment group. # As the service environment is setup at start up time, any changes # in this group require service to be restarted in order to take effect. # # Setting TMPDIR for all services: # TMPDIR=/vmware/temp # # Setting TMPDIR for vmsvc only: # vmsvc.TMPDIR=/vmware/vmsvc/temp # # Setting TMPDIR for vmusr only: # vmusr.TMPDIR=/vmware/vmusr/temp [logging] # set to false to turn off logging #log = true # Log destinations for various services # By default, logs go to # %windir%/temp/vmware-<servicename>.log # for Windows, and # /var/log/vmware-<servicename>-<username>.log # for Linux, MacOS and Solaris. # Possible values for handler are: # file: logs to a file. Set *.data to the file name # file+: same as 'file', but appends to the file # All file paths used in *.data value need to be in Unix # format (forward slashes) and in utf-8, for all operating # systems. # vmx: logs to the host (ESXi, Workstation, Fusion) # std: Logs to stdout for level >= 'message', # and to stderr for more severe than 'message'. # syslog: logs to syslog # outputdebugstring: uses OutputDebugString (Windows only) # If handler is 'syslog' and the OS is Linux, the facility # can be set with <domain>.facility. The facility value can be one of # 'local0'..'local7', 'daemon' or 'user'. The default is 'user'. #vmtoolsd.facility = user # possible values for level are: # debug, info, message, warning, critical, error # Note that "debug" level logs generate huge amounts of logs and may also # include sensitive data required for diagnosis. Therefore, this level should # be used only for the duration of diagnosis of an issue and reverted back to # default setting post diagnosis. # Enable tools service logging to a file. #vmtoolsd.level = debug #vmtoolsd.handler = file #vmtoolsd.data = c:/tmp/vmtoolsd-${USER}.log # Enable 'vmsvc' service logging to a file. #vmsvc.level = debug #vmsvc.handler = file #vmsvc.data = c:/tmp/vmsvc.log # Enable VMwareResolutionSet.exe logging to a file. # Comment this for Linux guest, sometimes vmusr logs are not generated due # to this being uncommented #vmresset.level = debug #vmresset.handler = file+ #vmresset.data = c:/tmp/vmresset.log # Enable new "vmusr" service logging to a file. #vmusr.level = debug #vmusr.handler = file #vmusr.data = c:/tmp/vmusr.${USER}.log # Set the following configuration if you want to collect the logs for # vmware-toolbox-cmd utility #toolboxcmd.level = debug #toolboxcmd.handler = file #toolboxcmd.data = c:/tmp/vmtoolboxcmd-${USER}.log # With no explicit logging configuration for deployPkg, its default log path in # Linux is /var/log/vmware-imc/toolsDeployPkg.log, and in Windows is # %WINDIR%/Temp/vmware-imc/toolsDeployPkg.log # Set the following configuration if you want to redirect the deployPkg log to # any existing location other than the default. #deployPkg.level = debug #deployPkg.handler = file #deployPkg.data = c:/tmp/toolsDeployPkg-${USER}.log # Redirecting the deployPkg log to the vmx log file. Please note that # "log = true" and the vmsvc log handler setting to vmx are also neccessary # if you want to redirect the deployPkg log to vmx. #log = true #vmsvc.level = debug #vmsvc.handler = vmx #deployPkg.level = debug #deployPkg.handler = vmx # Enable old VMwareUser/vmware-user logging to file. #log.file = c:/tmp/vmtools.log # Enable "hgfsServer" request handling logging to the appropriate service file. #hgfsServer.level = debug # Enable "hgfs" manager and transport logging to the appropriate service file. #hgfsd.level = debug #vmbackup.level = debug #vmbackup.handler = vmx #vmvss.level = debug #vmvss.handler = vmx # Default 4096, 0=> deactivate log caching #maxCacheEntries=4096 # Set the following configurations for modifying network script logging file. # Only for Linux, Mac OS X, Solaris, and FreeBSD #network.handler = file #network.data = /tmp/network.log #network.maxOldLogFiles = 9 # Redirect network script logs to vmx #network.handler = vmx [powerops] # Custom scripts for power operations # This can be an absolute path, or a path relative to the tools # install path (/etc/vmware-tools/ for Linux). # For more information on configuring and querying custom scripts with # VMware Tools, see the "Use Custom VMware Tools Scripts" section of the # "VMware Tools Configuration Utility User's Guide". # Runs when the virtual machine is being powered on rather than resumed. # Also runs after virtual machine restarts. # The default script has no effect on networking for the virtual machine. #poweron-script=poweron-vm-default # Runs when the virtual machine is being powered off or reset. # The default script has no effect on networking for the virtual machine. #poweroff-script=poweroff-vm-default # Runs when the virtual machine is resumed after it was suspended. # On Windows guest operating systems, if the virtual machine is configured to # use DHCP, the default script renews the IP address of the virtual machine. # On Linux, Mac OS X, Solaris, and FreeBSD guest operating systems, # this script starts networking for the virtual machine. #resume-script=resume-vm-default # Runs when the virtual machine is being suspended. # On Windows guest operating systems, if the virtual machine is configured # to use DHCP, the default script releases the IP address of the virtual # machine. # On Linux, Mac OS X, Solaris, and FreeBSD, this script stops networking for # the virtual machine. #suspend-script=suspend-vm-default [guestinfo] # Set to true to deactivate the perf monitor. #disable-perf-mon=false # Set to true to deactivate DiskInfo. #disable-query-diskinfo=false # User-defined poll interval in seconds. Set to 0 to deactivate polling. #poll-interval=30 # User-defined stats interval in seconds. Set to 0 to deactivate stats collection. #stats-interval=20 # Whether stat results should be written to the log. #enable-stat-logging=false # Set a comma separated list of network interface names that can be the # primary ones. These will be sorted to the top. Interface names can use # wildcards like '*' and '?'. Default is no value. #primary-nics= # Set a comma separated list of network interface names that have low priority # (so they will be sorted to the end). Interface names can use wildcards like # '*' and '?'. Default is no value. #low-priority-nics= # Set a comma separated list of network interface names that shall be ignored. # Interface names can use wildcards like '*' and '?'. # Default for Linux and all non-Windows: #exclude-nics=veth*,docker*,virbr*,antrea-*,cali* # Default for Windows: #exclude-nics=vEthernet* # max umber of IPv4 routes to gather. #max-ipv4-routes=100 # max umber of IPv6 routes to gather. #max-ipv6-routes=100 # whether to include reserved space in diskInfo space metrics on Linux #diskinfo-include-reserved=false [globalconf] # The GlobalConf feature provides an ability for the vSphere administrators # to distribute a 'VMware Tools Configuration File' (tools.conf) via the # GuestStore for multiple VMs at scale. # Defines the configuration to activate/deactivate the GlobalConf module. # Set to true to enable(activate) the module. # Set to false to deactivate the module. Default false. #enabled=false # Defines a custom GlobalConf poll interval (in seconds). # Default 3600 seconds. Minimum 1800 seconds. #poll-interval=3600 # Defines the global configuration resource in GuestStore. # Windows guests #resource=/vmware/configurations/vmtools/windows/tools.conf # # Linux guests #resource=/vmware/configurations/vmtools/linux/tools.conf [componentmgr] # This plugin manages the known and enabled components add/remove status. # The plugin polls at regular interval and triggers action add/remove for # all the known and enabled components in the componentMgr plugin. # Default and minimum polling interval in seconds (0 => polling deactivated) #poll-interval=180 # Comma separated list of components managed by the plugin. If not specified, # default value is all, which means all components are enabled by default. # A special value of none means no component, which is equivalent to disabling # the plugin completely. Value is parsed left to right and parsing stops at # first occurrence of all or none or end of line. #included=all [appinfo] # This plugin collects info about running applications in guest OS. # Set to true to deactivate the appinfo plugin. #disabled=false # User-defined poll interval in seconds. Set to 0 to deactivate the plugin. #poll-interval=21600 # For Windows guest, set to true to use WMI for getting the application # version info, otherwise native Win32 API is used. #useWMI=false # Whether to remove the duplicate applications information in the # guestinfo variable. #remove-duplicates=true [containerinfo] # This plugin collects info about running containers in guest OS. # User-defined poll interval in seconds. Set to 0 to deactivate the plugin. #poll-interval=21600 # Maximum number of containers to be retrieved per namespace. #max-containers=256 # Whether to remove the duplicate containers information in the # guestinfo variable. #remove-duplicates=true # Unix socket to use to communicate with the docker daemon. #docker-unix-socket=/var/run/docker.sock # The unix socket to connect to communicate with containerd grpc server # for retrieving the list of running containers. #containerd-unix-socket=/run/containerd/containerd.sock # List of namespaces to be queried for the running containers. # The value for this key is a comman separated list. #allowed-namespaces=moby,k8s.io,default [servicediscovery] # This plugin provides admins with additional info for better VM management. # Set to true to deactivate the servicediscovery plugin. #disabled=false [unity] # # Unity is available for Windows only. # # Set to true to override system decisions about whether unity should be available. #forceEnable=false # Override the desktop background color when in Unity mode. #desktop.backgroundColor= # The socket type can be 'ipsocket' or 'vsocket': #pbrpc.socketType [resolutionKMS] # Default is true if tools finds an xf86-video-vmware driver with # version >= 13.2.0. If you don't have X installed, set this to true manually. # This only affects tools for Linux. #enable=true [guestosinfo] # Override the short OS name sent by tools. #short-name= # Override the long OS name sent by tools. #long-name= [vmbackup] # enableSyncDriver is Linux only. #enableSyncDriver=true # enableVSS is Windows only. #enableVSS=true # vss.disableAppQuiescing is Windows only. # This setting can be used to force file system quiescing on Windows systems # having problems with application quiescing. # See https://kb.vmware.com/s/article/2146204 #vss.disableAppQuiescing=false # Linux: # The value of excludedFileSystems is a comma-separated list of glob-style # patterns specifying the file system mount points to be excluded from # quiescing operation. The patterns may use '*' (wildcard) to represent # any string of characters and '?' (joker) to represent any single character. # The characters represented by the patterns '*' and '?' may include any # characters, including '/'. # # Windows: # The value of excludedFileSystems is a comma-separated list of mount points # specifying the volumes to be excluded from quiesced snapshots. # Each mount point must be a full path separated and ended with "\\". # For example, to exclude volumes with drive letter 'E' or mount point # "F:\mount\", use: # excludedFileSystems=E:\\,F:\\mount\\ # This setting is ignored when application quiescing is used. #excludedFileSystems= # Linux: # It is possible that filesystems are being frozen in pre-freeze scripts # to control the order in which those specific filesystems are to be frozen. # The vmtoolsd process must be informed of all such filesystems with the help # of "excludedFileSystems" setting of tools.conf. # # A temporary workaround is available (starting from 12.3.0) for admins to allow # quiesceing operation to succeed until the "excludedFileSystems" list # is configured. # # If another process thaws the file system while a quiescing operation # operation is ongoing, the snapshot may be compromised. Once the # "excludedFileSystems" list is configured this setting MUST be unset (or set # to false). # # The value of ignoreFrozenFileSystems is a true or false; the default is # false. # # Set to true to ignore pre-frozen file systems during the quiescing operation. # # ignoreFrozenFileSystems is Linux only (Not supported on Windows). #ignoreFrozenFileSystems=false # execScripts specifies whether to execute scripts as part of the quiescing # operation. Scripts are executed from the scripts directory along with the # legacy scripts. # # Scripts directory: # Linux: /etc/vmware-tools/backupScripts.d # Windows: <Install-Path>\backupScripts.d # # Legacy scripts: # Linux: /usr/sbin/pre-freeze-script and /usr/sbin/post-thaw-script # Windows: C:\windows\pre-freeze-script.bat and C:\windows\post-thaw-script.bat # # On each quiescing operation, scripts are invoked before quiescing and # either after a quiescing failure or after thawing. # The first argument passed to each script is # "freeze", when invoked before quiescing; # "freezefail", when invoked after a quiescing failure; or # "thaw", when invoked after thawing. # When invoked before quiescing, scripts from the directory are invoked in # alphabetically ascending order; when invoked following a quiescing failure # or thawing, they are invoked in the reverse order. Any subdirectories are # ignored. # Note that the legacy pre-freeze-script is invoked only before quiescing as # the first script and post-thaw-script is invoked after a quiescing failure # as well as after thawing as the last script. #execScripts=true # Additional argument to be passed to scripts #scriptArg= [guestoperations] # to deactivate all guest ops #disabled=false # Whether to use vgauth for guest op authentication #useVGAuth=true [autoupgrade] # The "allow-upgrade" option controls whether automatic upgrades (or reinstalls) # are allowed. #allow-upgrade=true # The autoupgrade plugin is only available for Windows. # The "allow-add-feature" and "allow-remove-feature" control whether adding # or removing a feature will be allowed. # The allow-msi-transforms option controls whether TRANSFORMS property is # allowed. #allow-add-feature=true #allow-remove-feature=true #allow-msi-transforms=false [deployPkg] # to deactivate guest customization #enable-customization=false # This "wait-cloudinit-timeout" option controls how long does guest # customization wait for cloud-init execution done when it detects cloud-init # is available in guest. # Guest customization will continue executing as soon as it detects cloud-init # execution done within this option's value in seconds. # If cloud-init is still running beyond this option's value in seconds, guest # customization will continue executing regardless cloud-init execution status. # Minimum valid value is 0 second, set to 0 to deactivate waiting. # Maximum valid value is 1800 seconds (30 minutes). # Default value is 30 seconds. #wait-cloudinit-timeout=30 [cbhelper] # The carbonblack helper plugin is only available for Windows. # User-defined poll interval in seconds. Set to 0 to deactivate polling. #poll-interval=60 [gueststoreupgrade] # The guestStoreUpgrade plugin is only available for Windows. # The policy value is one of the settings listed below. # off = no VMware Tools upgrade from GuestStore. Feature is # deactivated. # manual = (Default) VMware Tools upgrade from GuestStore is # manually started. # powercycle = VMware Tools upgrade from GuestStore on system # power on. #policy=manual # Time interval for periodically checking available VMware Tools package # version in the GuestStore. # User-defined poll interval in seconds. Set to 0 to deactivate polling. # Minimum valid value is 900 seconds (15 minutes) # Default value is 3600 seconds (60 minutes) #poll-interval=3600 # VMware Tools package version metadata key to specify a VMware Tools # package version in the GuestStore. # User-defined key for VMware Tools package version. # Default value is "vmtools" which points to the latest version of # VMware Tools package in the GuestStore. #vmtools-version-key=vmtools [devicehelper] # The deviceHelper plugin is only available for Windows. # Set to true to deactivate the deviceHelper plugin. #disabled=false [gitray] # The gitray plugin is only available for Windows # with Complete VMTools install or with File # Introspection Custom install. # By default the gitray plugin is enabled # To disable gitray user plugin set #enabled=false tools.conf 0000644 00000000737 15027404103 0006556 0 ustar 00 [logging] # Turns on logging globally. It can still be disabled for each domain. # log = true # Disables core dumps on fatal errors; they're enabled by default. # enableCoreDump = false # Defines the "vmsvc" domain, logging to file # vmsvc.level = message vmsvc.handler = file # Setup file rotation - keep 3 files vmsvc.maxOldLogFiles = 3 # Max log file size kept: 1 MB vmsvc.maxLogSize = 1 # Defines the "vmtoolsd" domain, and disable logging for it. # vmtoolsd.level = none statechange.subr 0000644 00000002706 15027404103 0007730 0 ustar 00 #!/bin/sh ########################################################## # Copyright (C) 2010-2016 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation version 2.1 and no later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################## ########################################################################## # DO NOT modify this file directly as it will be overwritten the next # time the VMware Tools are installed. ########################################################################## # # Panic -- # # Write a formatted error message to stderr and exit. # # Results: # Stderr is spammed, program exits with exit code 1. # # Side effects: # None. # Panic() { fmt="`date '+%b %d %H:%M:%S'` `basename \"$0\"`" if [ -n "$1" ]; then fmt="${fmt}: $1" shift fi printf >&2 "${fmt}\n" "$@" exit 1 } suspend-vm-default 0000755 00000010426 15027404103 0010214 0 ustar 00 #!/bin/sh ########################################################## # Copyright (c) 2010-2016, 2023 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation version 2.1 and no later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################## ########################################################################## # DO NOT modify this file directly as it will be overwritten the next # time the VMware Tools are installed. ########################################################################## # # statechange.sh # # This script is a refactored version of the legacy power scripts (e.g., # poweron-vm-default). It expects to be installed in their places -- # in other words, `basename "$0"` might be poweron-vm-default. # # Handy reference/shorthand used in this doc/scripts: # TOOLS_CONFDIR ::= Depends on platform and installation settings. Likely # "/etc/vmware-tools" or # "/Library/Application Support/VMware Tools" # powerOp ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and # "resume-vm". # vmwScriptDir ::= $TOOLS_CONFDIR/scripts/vmware # userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d # # End users may install scripts of their own under $userScriptDir. They # are executed in alphabetical order with "$powerOp" as the only argument. # # NB: This directory layout remains to preserve backwards compatibility. End # users are free to write a single script which uses its only parameter # (${powerOp}) as a discriminator, and then install symlinks to it in each # of the ${powerOp}-default.d directories. # # On power-on and resume, VMware's scripts execute before the end user's. On # suspend and power-off, the end user's execute before VMware's. (This way, # VMware stops services only after the user's scripts have finished their # work, and conversely restores the same services before the user's scripts # attempt to use them.) # # Should any script exit non-zero, only its value will be saved to exitCode. # (Any further non-zero exits will have no effect on exitCode.) This script # exits with $exitCode. # # XXX Consider using the available/enabled pattern for VMware's scripts. # # XXX This should be staged as a single executable whereby the desired # power operation is passed in as a parameter. (I.e., one would run # "/path/to/statechange.sh suspend-vm" rather than having to install # statechange.sh as suspend-vm-default.) # echo `date` ": Executing '$0'" # See above. TOOLS_CONFDIR=`dirname "$0"` export TOOLS_CONFDIR # Pull in subroutines like Panic. . "$TOOLS_CONFDIR"/statechange.subr # # RunScripts -- # # Executes scripts installed under $scriptDir. # # Side effects: # exitCode may be incremented. # RunScripts() { scriptDir="$1" if [ -d "$scriptDir" ]; then for scriptFile in "$scriptDir"/*; do if [ -x "$scriptFile" ]; then "$scriptFile" $powerOp exitCode=`expr $exitCode \| $?` fi done fi } # # main -- # # Entry point. See comments at top of file for details. # # Results: # Exits with $exitCode. # main() { # This is confidence checked in the case/esac bit below. powerOp=`basename "$0" | sed 's,-default,,'` exitCode=0 vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware" userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d" case "$powerOp" in poweron-vm|resume-vm) RunScripts "$vmwScriptDir" RunScripts "$userScriptDir" ;; poweroff-vm|suspend-vm) RunScripts "$userScriptDir" RunScripts "$vmwScriptDir" ;; *) Panic "Invalid argument: $powerOp" ;; esac return $exitCode } main poweron-vm-default 0000755 00000010426 15027404103 0010224 0 ustar 00 #!/bin/sh ########################################################## # Copyright (c) 2010-2016, 2023 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation version 2.1 and no later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################## ########################################################################## # DO NOT modify this file directly as it will be overwritten the next # time the VMware Tools are installed. ########################################################################## # # statechange.sh # # This script is a refactored version of the legacy power scripts (e.g., # poweron-vm-default). It expects to be installed in their places -- # in other words, `basename "$0"` might be poweron-vm-default. # # Handy reference/shorthand used in this doc/scripts: # TOOLS_CONFDIR ::= Depends on platform and installation settings. Likely # "/etc/vmware-tools" or # "/Library/Application Support/VMware Tools" # powerOp ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and # "resume-vm". # vmwScriptDir ::= $TOOLS_CONFDIR/scripts/vmware # userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d # # End users may install scripts of their own under $userScriptDir. They # are executed in alphabetical order with "$powerOp" as the only argument. # # NB: This directory layout remains to preserve backwards compatibility. End # users are free to write a single script which uses its only parameter # (${powerOp}) as a discriminator, and then install symlinks to it in each # of the ${powerOp}-default.d directories. # # On power-on and resume, VMware's scripts execute before the end user's. On # suspend and power-off, the end user's execute before VMware's. (This way, # VMware stops services only after the user's scripts have finished their # work, and conversely restores the same services before the user's scripts # attempt to use them.) # # Should any script exit non-zero, only its value will be saved to exitCode. # (Any further non-zero exits will have no effect on exitCode.) This script # exits with $exitCode. # # XXX Consider using the available/enabled pattern for VMware's scripts. # # XXX This should be staged as a single executable whereby the desired # power operation is passed in as a parameter. (I.e., one would run # "/path/to/statechange.sh suspend-vm" rather than having to install # statechange.sh as suspend-vm-default.) # echo `date` ": Executing '$0'" # See above. TOOLS_CONFDIR=`dirname "$0"` export TOOLS_CONFDIR # Pull in subroutines like Panic. . "$TOOLS_CONFDIR"/statechange.subr # # RunScripts -- # # Executes scripts installed under $scriptDir. # # Side effects: # exitCode may be incremented. # RunScripts() { scriptDir="$1" if [ -d "$scriptDir" ]; then for scriptFile in "$scriptDir"/*; do if [ -x "$scriptFile" ]; then "$scriptFile" $powerOp exitCode=`expr $exitCode \| $?` fi done fi } # # main -- # # Entry point. See comments at top of file for details. # # Results: # Exits with $exitCode. # main() { # This is confidence checked in the case/esac bit below. powerOp=`basename "$0" | sed 's,-default,,'` exitCode=0 vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware" userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d" case "$powerOp" in poweron-vm|resume-vm) RunScripts "$vmwScriptDir" RunScripts "$userScriptDir" ;; poweroff-vm|suspend-vm) RunScripts "$userScriptDir" RunScripts "$vmwScriptDir" ;; *) Panic "Invalid argument: $powerOp" ;; esac return $exitCode } main
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings