mirror of https://github.com/apache/activemq.git
Moved the xmpp transport into the main trunk
git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@467593 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a191115187
commit
7b19dd4cec
|
@ -0,0 +1,238 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.apache.activemq</groupId>
|
||||
<artifactId>activemq-parent</artifactId>
|
||||
<version>4.1-incubator-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>activemq-xmpp</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>ActiveMQ :: XMPP</name>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>codehaus</id>
|
||||
<name>Codehaus Maven 2 Repository</name>
|
||||
<url>http://repository.codehaus.org/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>maven2-repository.dev.java.net</id>
|
||||
<name>Java.net Maven 2 Repository</name>
|
||||
<url>https://maven2-repository.dev.java.net/nonav/repository</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>maven-repository.dev.java.net</id>
|
||||
<name>Java.net Maven 1 Repository (legacy)</name>
|
||||
<url>https://maven-repository.dev.java.net/nonav/repository</url>
|
||||
<layout>legacy</layout>
|
||||
</repository>
|
||||
</repositories>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>maven2-repository.dev.java.net</id>
|
||||
<url>https://maven2-repository.dev.java.net/nonav/repository</url>
|
||||
</pluginRepository>
|
||||
<pluginRepository>
|
||||
<id>maven-repository.dev.java.net</id>
|
||||
<name>Java.net Maven 1 Repository (legacy)</name>
|
||||
<url>https://maven-repository.dev.java.net/nonav/repository</url>
|
||||
<layout>legacy</layout>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- activemq -->
|
||||
<dependency>
|
||||
<groupId>${pom.groupId}</groupId>
|
||||
<artifactId>activemq-core</artifactId>
|
||||
</dependency>
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>${pom.groupId}</groupId>
|
||||
<artifactId>activemq-core</artifactId>
|
||||
<scope>compile</scope>
|
||||
<type>test-jar</type>
|
||||
</dependency>
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>${pom.groupId}</groupId>
|
||||
<artifactId>activeio-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>stax</groupId>
|
||||
<artifactId>stax</artifactId>
|
||||
<scope>runtime</scope>
|
||||
<optional>true</optional>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>xmlbeans</groupId>
|
||||
<artifactId>xmlbeans-jsr173-api</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.sun.xml.bind</groupId>
|
||||
<artifactId>jaxb-impl</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>javax.xml</groupId>
|
||||
<artifactId>jsr173</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>javax.jws</groupId>
|
||||
<artifactId>jsr181-api</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.xml</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<version>2.0</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>javax.xml</groupId>
|
||||
<artifactId>jsr173</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.codehaus.woodstox</groupId>
|
||||
<!--<groupId>woodstox</groupId>-->
|
||||
<artifactId>wstx-asl</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<!--<version>3.1-rc1</version>-->
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jivesoftware</groupId>
|
||||
<artifactId>smack</artifactId>
|
||||
<version>1.5.0</version>
|
||||
<!--<version>2.2.1</version>-->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jivesoftware</groupId>
|
||||
<artifactId>smackx</artifactId>
|
||||
<version>1.5.0</version>
|
||||
<!--<version>2.2.1</version>-->
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
<build>
|
||||
<defaultGoal>install</defaultGoal>
|
||||
|
||||
<plugins>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<inherited>true</inherited>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Configure which tests are included/excuded -->
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<!--
|
||||
<includes>
|
||||
<include>**/*Test.*</include>
|
||||
</includes>
|
||||
-->
|
||||
<excludes>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.jvnet.jaxb2.maven2</groupId>
|
||||
<artifactId>maven-jaxb2-plugin</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>net.java.dev.jaxb2-commons</groupId>
|
||||
<artifactId>jaxb-fluent-api</artifactId>
|
||||
<version>2.0.1</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.sun.xml</groupId>
|
||||
<artifactId>jaxb-xjc</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<strict>false</strict>
|
||||
<verbose>false</verbose>
|
||||
<args>
|
||||
<!--<arg value="-Xfluent-api"/>-->
|
||||
</args>
|
||||
<!--
|
||||
<arg>-XtoString</arg>
|
||||
<arg>-Xequals</arg>
|
||||
<arg>-XhashCode</arg>
|
||||
-->
|
||||
<!--
|
||||
<schemasExcludes>
|
||||
<exclude>delimiter.xsd</exclude>
|
||||
</schemasExcludes>
|
||||
-->
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,5 @@
|
|||
This directory contains all the bad XSDs from the XMPP project that we can't process via JAXB2
|
||||
|
||||
For more see
|
||||
|
||||
http://www.xmpp.org/schemas/
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='urn:ietf:params:xml:ns:xmpp-bind'
|
||||
xmlns='urn:ietf:params:xml:ns:xmpp-bind'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='bind'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='1'>
|
||||
<xs:element name='resource' type='resourceType'/>
|
||||
<xs:element name='jid' type='fullJIDType'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='resourceType'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:minLength value='1'/>
|
||||
<xs:maxLength value='1023'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name='fullJIDType'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:minLength value='8'/>
|
||||
<xs:maxLength value='3071'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='storage:bookmarks'
|
||||
xmlns='storage:bookmarks'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0048: http://www.jabber.org/jeps/jep-0048.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='storage'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element ref='url'/>
|
||||
<xs:element ref='conference'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='url'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='name' type='xs:string' use='required'/>
|
||||
<xs:attribute name='url' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='conference'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='nick' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='password' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='autojoin' type='xs:boolean' use='optional' default='false'/>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='name' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/bytestreams'
|
||||
xmlns='http://jabber.org/protocol/bytestreams'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0065: http://www.jabber.org/jeps/jep-0065.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element ref='streamhost' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='streamhost-used' minOccurs='0'/>
|
||||
<xs:element name='activate' type='empty' minOccurs='0'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='sid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='mode' use='optional' default='tcp'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='tcp'/>
|
||||
<xs:enumeration value='udp'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='streamhost'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='host' type='xs:string' use='required'/>
|
||||
<xs:attribute name='zeroconf' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='port' type='xs:string' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='udpsuccess'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='dstaddr' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='streamhost-used'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/caps'
|
||||
xmlns='http://jabber.org/protocol/caps'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0115: http://www.jabber.org/jeps/jep-0115.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='c'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='ext' type='xs:NMTOKENS' use='optional'/>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
<xs:attribute name='ver' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/chatstates'
|
||||
xmlns='http://jabber.org/protocol/chatstates'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0085: http://www.jabber.org/jeps/jep-0085.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='active' type='empty'/>
|
||||
<xs:element name='composing' type='empty'/>
|
||||
<xs:element name='gone' type='empty'/>
|
||||
<xs:element name='inactive' type='empty'/>
|
||||
<xs:element name='paused' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,102 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/commands'
|
||||
xmlns='http://jabber.org/protocol/commands'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0050: http://www.jabber.org/jeps/jep-0050.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import namespace='http://www.w3.org/XML/1998/namespace'
|
||||
schemaLocation='http://www.w3.org/2001/xml.xsd'/>
|
||||
|
||||
<xs:element name='command'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element ref='actions' minOccurs='0'/>
|
||||
<xs:element ref='note' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='action' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='execute'/>
|
||||
<xs:enumeration value='cancel'/>
|
||||
<xs:enumeration value='prev'/>
|
||||
<xs:enumeration value='next'/>
|
||||
<xs:enumeration value='complete'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
<xs:attribute name='sessionid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='status' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='executing'/>
|
||||
<xs:enumeration value='completed'/>
|
||||
<xs:enumeration value='canceled'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='actions'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='prev' type='empty' minOccurs='0'/>
|
||||
<xs:element name='next' type='empty' minOccurs='0'/>
|
||||
<xs:element name='complete' type='empty' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='prev'/>
|
||||
<xs:enumeration value='next'/>
|
||||
<xs:enumeration value='complete'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='note'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='info'/>
|
||||
<xs:enumeration value='warn'/>
|
||||
<xs:enumeration value='error'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='bad-action' type='empty'/>
|
||||
<xs:element name='bad-locale' type='empty'/>
|
||||
<xs:element name='bad-payload' type='empty'/>
|
||||
<xs:element name='bad-sessionid' type='empty'/>
|
||||
<xs:element name='malformed-action' type='empty'/>
|
||||
<xs:element name='session-expired' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,201 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
xmlns:xml='http://www.w3.org/XML/1998/namespace'
|
||||
targetNamespace='jabber:component:accept'
|
||||
xmlns='jabber:component:accept'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-streams'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0114: http://www.jabber.org/jeps/jep-0114.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='handshake' type='xs:string'/>
|
||||
|
||||
|
||||
<xs:element name='message'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='subject'/>
|
||||
<xs:element ref='body'/>
|
||||
<xs:element ref='thread'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional' default='normal'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='groupchat'/>
|
||||
<xs:enumeration value='headline'/>
|
||||
<xs:enumeration value='normal'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='body'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subject'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='thread' type='xs:NMTOKEN'/>
|
||||
|
||||
<xs:element name='presence'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='show'/>
|
||||
<xs:element ref='status'/>
|
||||
<xs:element ref='priority'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='subscribe'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unsubscribe'/>
|
||||
<xs:enumeration value='unsubscribed'/>
|
||||
<xs:enumeration value='unavailable'/>
|
||||
<xs:enumeration value='probe'/>
|
||||
<xs:enumeration value='error'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='show'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='away'/>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='dnd'/>
|
||||
<xs:enumeration value='xa'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='status'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='priority' type='xs:byte'/>
|
||||
|
||||
<xs:element name='iq'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='required'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='get'/>
|
||||
<xs:enumeration value='set'/>
|
||||
<xs:enumeration value='result'/>
|
||||
<xs:enumeration value='error'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='error'>
|
||||
<xs:complexType>
|
||||
<xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-streams'>
|
||||
<xs:group ref='err:stanzaErrorGroup'/>
|
||||
<xs:element ref='err:text'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='code' type='xs:byte' use='optional'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='cancel'/>
|
||||
<xs:enumeration value='continue'/>
|
||||
<xs:enumeration value='modify'/>
|
||||
<xs:enumeration value='auth'/>
|
||||
<xs:enumeration value='wait'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,200 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
xmlns:xml='http://www.w3.org/XML/1998/namespace'
|
||||
targetNamespace='jabber:component:connect'
|
||||
xmlns='jabber:component:connect'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-streams'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0114: http://www.jabber.org/jeps/jep-0114.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='handshake' type='xs:string'/>
|
||||
|
||||
<xs:element name='message'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='subject'/>
|
||||
<xs:element ref='body'/>
|
||||
<xs:element ref='thread'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional' default='normal'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='groupchat'/>
|
||||
<xs:enumeration value='headline'/>
|
||||
<xs:enumeration value='normal'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='body'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subject'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='thread' type='xs:NMTOKEN'/>
|
||||
|
||||
<xs:element name='presence'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='show'/>
|
||||
<xs:element ref='status'/>
|
||||
<xs:element ref='priority'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='subscribe'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unsubscribe'/>
|
||||
<xs:enumeration value='unsubscribed'/>
|
||||
<xs:enumeration value='unavailable'/>
|
||||
<xs:enumeration value='probe'/>
|
||||
<xs:enumeration value='error'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='show'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='away'/>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='dnd'/>
|
||||
<xs:enumeration value='xa'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='status'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='priority' type='xs:byte'/>
|
||||
|
||||
<xs:element name='iq'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='required'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='get'/>
|
||||
<xs:enumeration value='set'/>
|
||||
<xs:enumeration value='result'/>
|
||||
<xs:enumeration value='error'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='error'>
|
||||
<xs:complexType>
|
||||
<xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-streams'>
|
||||
<xs:group ref='err:stanzaErrorGroup'/>
|
||||
<xs:element ref='err:text'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='code' type='xs:byte' use='optional'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='cancel'/>
|
||||
<xs:enumeration value='continue'/>
|
||||
<xs:enumeration value='modify'/>
|
||||
<xs:enumeration value='auth'/>
|
||||
<xs:enumeration value='wait'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/features/compress'
|
||||
xmlns='http://jabber.org/features/compress'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0138: http://www.jabber.org/jeps/jep-0138.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='compression'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='method' type='xs:NCName' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/compress'
|
||||
xmlns='http://jabber.org/protocol/compress'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-stanzas'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0138: http://www.jabber.org/jeps/jep-0138.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='compress'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='method' type='xs:NCName' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='compressed' type='empty'/>
|
||||
|
||||
<xs:element name='failure'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element name='setup-failed' type='empty'/>
|
||||
<xs:element name='processing-failed' type='empty'/>
|
||||
<xs:element name='unsupported-method' type='empty'/>
|
||||
<xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-stanzas'>
|
||||
<xs:group ref='err:stanzaErrorGroup'/>
|
||||
<xs:element ref='err:text' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='roster:delimiter'
|
||||
xmlns='roster:delimiter'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0083: http://www.jabber.org/jeps/jep-0083.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='roster' type='xs:string'/>
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='urn:ietf:params:xml:ns:xmpp-e2e'
|
||||
xmlns='urn:ietf:params:xml:ns:xmpp-e2e'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='e2e' type='xs:string'/>
|
||||
|
||||
<xs:element name='decryption-failed' type='empty'/>
|
||||
<xs:element name='signature-unverified' type='empty'/>
|
||||
<xs:element name='bad-timestamp' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/feature-neg'
|
||||
xmlns='http://jabber.org/protocol/feature-neg'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import
|
||||
namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0020: http://www.jabber.org/jeps/jep-0020.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='feature'>
|
||||
<xs:complexType>
|
||||
<xs:sequence xmlns:data='jabber:x:data'>
|
||||
<xs:element ref='data:x'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/si/profile/file-transfer'
|
||||
xmlns='http://jabber.org/protocol/si/profile/file-transfer'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0096: http://www.jabber.org/jeps/jep-0096.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='file'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element name='desc' type='xs:string'/>
|
||||
<xs:element ref='range'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='date' type='xs:dateTime' use='optional'/>
|
||||
<xs:attribute name='hash' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='name' type='xs:string' use='required'/>
|
||||
<xs:attribute name='size' type='xs:integer' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='range'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='length' type='xs:integer' use='optional'/>
|
||||
<xs:attribute name='offset' type='xs:integer' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/geoloc'
|
||||
xmlns='http://jabber.org/protocol/geoloc'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0080: http://www.jabber.org/jeps/jep-0080.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='geoloc'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccur='0'>
|
||||
<xs:element name='alt' minOccurs='0' type='xs:decimal'/>
|
||||
<xs:element name='bearing' minOccurs='0' type='xs:decimal'/>
|
||||
<xs:element name='datum' minOccurs='0' type='xs:string'/>
|
||||
<xs:element name='description' minOccurs='0' type='xs:string'/>
|
||||
<xs:element name='error' minOccurs='0' type='xs:decimal'/>
|
||||
<xs:element name='lat' minOccurs='1' type='xs:decimal'/>
|
||||
<xs:element name='lon' minOccurs='1' type='xs:decimal'/>
|
||||
<xs:element name='timestamp' minOccurs='0' type='xs:datetime'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/http-auth'
|
||||
xmlns='http://jabber.org/protocol/http-auth'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0070: http://www.jabber.org/jeps/jep-0070.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='confirm'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='id' use='required' type='xs:string'/>
|
||||
<xs:attribute name='method' use='required' type='xs:NCName'/>
|
||||
<xs:attribute name='url' use='required' type='xs:anyURI'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
xmlns:stream='http://etherx.jabber.org/streams'
|
||||
targetNamespace='http://jabber.org/protocol/httpbind'
|
||||
xmlns='http://jabber.org/protocol/httpbind'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0124: http://www.jabber.org/jeps/jep-0124.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import namespace='http://etherx.jabber.org/streams'
|
||||
schemaLocation='http://www.xmpp.org/schemas/streams.xsd'/>
|
||||
|
||||
<xs:element name='body'>
|
||||
<xs:complexType>
|
||||
<xs:choice xmlns:stream='http://etherx.jabber.org/streams'>
|
||||
<xs:element ref='stream:features'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
<xs:any namespace='urn:ietf:params:xml:ns:xmpp-tls'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
<xs:any namespace='urn:ietf:params:xml:ns:xmpp-sasl'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
<xs:any namespace='urn:ietf:params:xml:ns:xmpp-streams'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'/>
|
||||
<xs:any namespace='jabber:client'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element name='uri'
|
||||
minOccurs='0'
|
||||
maxOccurs='1'
|
||||
type='xs:string'/>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'
|
||||
processContents='lax'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='accept' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='authid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='charsets' type='xs:NMTOKENS' use='optional'/>
|
||||
<xs:attribute name='condition' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='host-gone'/>
|
||||
<xs:enumeration value='host-unknown'/>
|
||||
<xs:enumeration value='improper-addressing'/>
|
||||
<xs:enumeration value='internal-server-error'/>
|
||||
<xs:enumeration value='remote-connection-failed'/>
|
||||
<xs:enumeration value='remote-stream-error'/>
|
||||
<xs:enumeration value='see-other-uri'/>
|
||||
<xs:enumeration value='system-shutdown'/>
|
||||
<xs:enumeration value='undefined-condition'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='content' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='hold' type='xs:byte' use='optional'/>
|
||||
<xs:attribute name='inactivity' type='xs:short' use='optional'/>
|
||||
<xs:attribute name='key' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='newkey' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='polling' type='xs:short' use='optional'/>
|
||||
<xs:attribute name='requests' type='xs:byte' use='optional'/>
|
||||
<xs:attribute name='rid' type='xs:positiveInteger' use='optional'/>
|
||||
<xs:attribute name='route' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='secure' type='xs:boolean' use='optional' default='false'/>
|
||||
<xs:attribute name='sid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='stream' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='to' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='type' type='xs:string' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='terminate'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='wait' type='xs:short' use='optional'/>
|
||||
<xs:attribute name='xml:lang' type='xs:string' use='optional'/>
|
||||
<xs:anyAttribute namespace='##other' processContents='lax'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/ibb'
|
||||
xmlns='http://jabber.org/protocol/ibb'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0047: http://www.jabber.org/jeps/jep-0047.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='open'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='sid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='block-size' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='close'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='sid' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='data'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='sid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='seq' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,413 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>XMPP Schemas</title>
|
||||
<!--#include virtual="/includes/head.txt" -->
|
||||
<h2>XMPP Schemas</h2>
|
||||
<p><em>Last Updated: 2006-10-04</em></p>
|
||||
<p>The wire protocols defined in the <a href="/rfcs/">XMPP RFCs</a> and various <a href='/extensions/'>XMPP extensions</a> are described formally in terms of <a href="http://www.w3.org/TR/xmlschema-1/">W3C XML Schema</a>. This page provides links to online versions of the relevant schemas.</p>
|
||||
<p><em>Note: The following table is sortable, just click on the headers (click twice to reverse the sort order).</em></p>
|
||||
<table border='1' cellpadding='3' cellspacing='0' class='sortable' id='xeplist'>
|
||||
<tr class='tablebody'>
|
||||
<th>Namespace</th>
|
||||
<th>Schema</th>
|
||||
<th>Spec</th>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://etherx.jabber.org/streams</td>
|
||||
<td><a href='streams.xsd'>streams.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/activity</td>
|
||||
<td><a href='activity.xsd'>activity.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0108.html'>XEP-0108</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/address</td>
|
||||
<td><a href='address.xsd'>address.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0033.html'>XEP-0033</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/amp</td>
|
||||
<td><a href='amp.xsd'>amp.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0079.html'>XEP-0079</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/amp#errors</td>
|
||||
<td><a href='amp-errors.xsd'>amp-errors.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0079.html'>XEP-0079</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/bytestreams</td>
|
||||
<td><a href='bytestreams.xsd'>bytestreams.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0065.html'>XEP-0065</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/caps</td>
|
||||
<td><a href='caps.xsd'>caps.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0115.html'>XEP-0115</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/chatstates</td>
|
||||
<td><a href='chatstates.xsd'>chatstates.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0085.html'>XEP-0085</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/commands</td>
|
||||
<td><a href='commands.xsd'>commands.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0050.html'>XEP-0050</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/compress</td>
|
||||
<td><a href='compress.xsd'>compress.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0138.html'>XEP-0138</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/features/compress</td>
|
||||
<td><a href='compress-feature.xsd'>compress-feature.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0138.html'>XEP-0138</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/disco#info</td>
|
||||
<td><a href='disco-info.xsd'>disco-info.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0030.html'>XEP-0030</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/disco#items</td>
|
||||
<td><a href='disco-items.xsd'>disco-items.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0030.html'>XEP-0030</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/feature-neg</td>
|
||||
<td><a href='feature-neg.xsd'>feature-neg.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0020.html'>XEP-0020</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/geoloc</td>
|
||||
<td><a href='geoloc.xsd'>geoloc.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0080.html'>XEP-0080</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/http-auth</td>
|
||||
<td><a href='http-auth.xsd'>http-auth.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0070.html'>XEP-0070</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/httpbind</td>
|
||||
<td><a href='httpbind.xsd'>httpbind.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0124.html'>XEP-0124</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/ibb</td>
|
||||
<td><a href='ibb.xsd'>ibb.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0047.html'>XEP-0047</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/mood</td>
|
||||
<td><a href='mood.xsd'>mood.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0107.html'>XEP-0107</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/muc</td>
|
||||
<td><a href='muc.xsd'>muc.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0045.html'>XEP-0045</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/muc#admin</td>
|
||||
<td><a href='muc-admin.xsd'>muc-admin.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0045.html'>XEP-0045</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/muc#owner</td>
|
||||
<td><a href='muc-owner.xsd'>muc-owner.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0045.html'>XEP-0045</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/muc#user</td>
|
||||
<td><a href='muc-user.xsd'>muc-user.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0045.html'>XEP-0045</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/nick</td>
|
||||
<td><a href='nick.xsd'>nick.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0172.html'>XEP-0172</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/offline</td>
|
||||
<td><a href='offline.xsd'>offline.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0013.html'>XEP-0013</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/pubsub</td>
|
||||
<td><a href='pubsub.xsd'>pubsub.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0060.html'>XEP-0060</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/pubsub#errors</td>
|
||||
<td><a href='pubsub-errors.xsd'>pubsub-errors.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0060.html'>XEP-0060</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/pubsub#event</td>
|
||||
<td><a href='pubsub-event.xsd'>pubsub-event.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0060.html'>XEP-0060</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/pubsub#owner</td>
|
||||
<td><a href='pubsub-owner.xsd'>pubsub-owner.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0060.html'>XEP-0060</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/rosterx</td>
|
||||
<td><a href='rosterx.xsd'>rosterx.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0144.html'>XEP-0144</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/rsm</td>
|
||||
<td><a href='rsm.xsd'>rsm.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0059.html'>XEP-0059</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/si</td>
|
||||
<td><a href='si.xsd'>si.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0095.html'>XEP-0095</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/si/profile/file-transfer</td>
|
||||
<td><a href='file-transfer.xsd'>file-transfer.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0096.html'>XEP-0096</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/sipub</td>
|
||||
<td><a href='sipub.xsd'>sipub.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0137.html'>XEP-0137</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/soap#fault</td>
|
||||
<td><a href='soap-fault.xsd'>soap-fault.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0072.html'>XEP-0072</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/tune</td>
|
||||
<td><a href='tune.xsd'>tune.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0095.html'>XEP-0095</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/waitinglist</td>
|
||||
<td><a href='waitinglist.xsd'>waitinglist.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0130.html'>XEP-0130</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/xhtml-im</td>
|
||||
<td><a href='xhtml-im-driver.xsd'>xhtml-im-driver.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0071.html'>XEP-0071</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/xhtml-im</td>
|
||||
<td><a href='xhtml-im-model.xsd'>xhtml-im-model.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0071.html'>XEP-0071</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/xhtml-im</td>
|
||||
<td><a href='xhtml-im-wrapper.xsd'>xhtml-im-wrapper.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0071.html'>XEP-0071</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/xdata-layout</td>
|
||||
<td><a href='xdata-layout.xsd'>xdata-layout.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0141.html'>XEP-0141</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>http://jabber.org/protocol/xdata-validate</td>
|
||||
<td><a href='xdata-validate.xsd'>xdata-validate.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0122.html'>XEP-0122</a></td>
|
||||
</tr>
|
||||
<!-- old-style jabber: namespaces -->
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:client</td>
|
||||
<td><a href='jabber-client.xsd'>jabber-client.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:component:accept</td>
|
||||
<td><a href='component-accept.xsd'>component-accept.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0114.html'>XEP-0114</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:component:connect</td>
|
||||
<td><a href='component-connect.xsd'>component-connect.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0114.html'>XEP-0114</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:auth</td>
|
||||
<td><a href='iq-auth.xsd'>iq-auth.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0078.html'>XEP-0078</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:gateway</td>
|
||||
<td><a href='iq-gateway.xsd'>iq-gateway.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0100.html'>XEP-0100</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:last</td>
|
||||
<td><a href='iq-last.xsd'>iq-last.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0012.html'>XEP-0012</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:oob</td>
|
||||
<td><a href='iq-oob.xsd'>iq-oob.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0066.html'>XEP-0066</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:pass</td>
|
||||
<td><a href='iq-pass.xsd'>iq-pass.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0003.html'>XEP-0003</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:privacy</td>
|
||||
<td><a href='privacy.xsd'>privacy.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3921.html'>RFC 3921</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:private</td>
|
||||
<td><a href='iq-private.xsd'>iq-private.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0049.html'>XEP-0049</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:register</td>
|
||||
<td><a href='iq-register.xsd'>iq-register.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0077.html'>XEP-0077</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:roster</td>
|
||||
<td><a href='roster.xsd'>roster.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3921.html'>RFC 3921</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:rpc</td>
|
||||
<td><a href='jabber-rpc.xsd'>jabber-rpc.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0009.html'>XEP-0009</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:search</td>
|
||||
<td><a href='iq-search.xsd'>iq-search.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0055.html'>XEP-0055</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:time</td>
|
||||
<td><a href='iq-time.xsd'>iq-time.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0090.html'>XEP-0090</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:iq:version</td>
|
||||
<td><a href='iq-version.xsd'>iq-version.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0092.html'>XEP-0092</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:server</td>
|
||||
<td><a href='jabber-server.xsd'>jabber-server.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:server:dialback</td>
|
||||
<td><a href='dialback.xsd'>dialback.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:data</td>
|
||||
<td><a href='x-data.xsd'>x-data.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0004.html'>XEP-0004</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:delay</td>
|
||||
<td><a href='x-delay.xsd'>x-delay.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0091.html'>XEP-0091</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:encrypted</td>
|
||||
<td><a href='x-encrypted.xsd'>x-encrypted.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0027.html'>XEP-0027</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:event</td>
|
||||
<td><a href='x-event.xsd'>x-event.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0022.html'>XEP-0022</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:expire</td>
|
||||
<td><a href='x-expire.xsd'>x-expire.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0023.html'>XEP-0023</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:oob</td>
|
||||
<td><a href='x-oob.xsd'>x-oob.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0066.html'>XEP-0066</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:roster</td>
|
||||
<td><a href='x-roster.xsd'>x-roster.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0093.html'>XEP-0093</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>jabber:x:signed</td>
|
||||
<td><a href='x-signed.xsd'>x-signed.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0027.html'>XEP-0027</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>roster:delimiter</td>
|
||||
<td><a href='delimiter.xsd'>delimiter.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0083.html'>XEP-0083</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>storage:bookmarks</td>
|
||||
<td><a href='bookmarks.xsd'>bookmarks.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0048.html'>XEP-0048</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>storage:rosternotes</td>
|
||||
<td><a href='rosternotes.xsd'>rosternotes.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0045.html'>XEP-0045</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-bind</td>
|
||||
<td><a href='bind.xsd'>bind.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-e2e</td>
|
||||
<td><a href='e2e.xsd'>e2e.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3923.html'>RFC 3923</a></td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-sasl</td>
|
||||
<td><a href='sasl.xsd'>sasl.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-session</td>
|
||||
<td><a href='session.xsd'>session.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3921.html'>RFC 3921</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-stanzas</td>
|
||||
<td><a href='stanzaerror.xsd'>stanzaerror.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-streams</td>
|
||||
<td><a href='streamerror.xsd'>streamerror.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>urn:ietf:params:xml:ns:xmpp-tls</td>
|
||||
<td><a href='tls.xsd'>tls.xsd</a></td>
|
||||
<td><a href='/rfcs/rfc3920.html'>RFC 3920</a> *</td>
|
||||
</tr>
|
||||
<tr class='tablebody'>
|
||||
<td>vcard-temp:x:update</td>
|
||||
<td><a href='vcard-avatar.xsd'>vcard-avatar.xsd</a></td>
|
||||
<td><a href='/extensions/xep-0153.html'>XEP-0153</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>* Note: The schemas provided here are the latest versions from the <a href="http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/cvs/xmpp/schemas/">CVS repository</a>, incorporating expected changes as reflected in <a href='/internet-drafts/draft-saintandre-rfc3920bis-00.html'>rfc3920bis</a> and <a href='/internet-drafts/draft-saintandre-rfc3921bis-00.html'>rfc3921bis</a>.</p>
|
||||
<!--#include virtual="/includes/foot.txt" -->
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:register'
|
||||
xmlns='jabber:iq:register'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import
|
||||
namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
<xs:import
|
||||
namespace='jabber:x:oob'
|
||||
schemaLocation='http://jabber.org/protocol/oob/x-oob.xsd'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0077: http://www.jabber.org/jeps/jep-0077.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence xmlns:xdata='jabber:x:data'
|
||||
xmlns:xoob='jabber:x:oob'>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element name='registered' type='empty' minOccurs='0'/>
|
||||
<xs:element name='instructions' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='username' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='nick' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='password' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='name' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='first' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='last' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='email' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='address' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='city' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='state' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='zip' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='phone' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='url' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='date' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='misc' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='text' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='key' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:element name='remove' type='empty' minOccurs='0'/>
|
||||
</xs:choice>
|
||||
<xs:element ref='xdata:x' minOccurs='0'/>
|
||||
<xs:element ref='xoob:x' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,47 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:search'
|
||||
xmlns='jabber:iq:search'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0055: http://www.jabber.org/jeps/jep-0055.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:all xmlns:xdata='jabber:x:data'>
|
||||
<xs:element name='instructions' type='xs:string'/>
|
||||
<xs:element name='first' type='xs:string'/>
|
||||
<xs:element name='last' type='xs:string'/>
|
||||
<xs:element name='nick' type='xs:string'/>
|
||||
<xs:element name='email' type='xs:string'/>
|
||||
<xs:element ref='xdata:x' minOccurs='0'/>
|
||||
</xs:all>
|
||||
<xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name='first' type='xs:string'/>
|
||||
<xs:element name='last' type='xs:string'/>
|
||||
<xs:element name='nick' type='xs:string'/>
|
||||
<xs:element name='email' type='xs:string'/>
|
||||
</xs:all>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,152 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:rpc'
|
||||
xmlns='jabber:iq:rpc'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0009: http://www.jabber.org/jeps/jep-0009.html
|
||||
|
||||
There is no official XML schema for XML-RPC. The main body
|
||||
of this schema has been borrowed from an unofficial schema
|
||||
representation contained in the book "Processing XML With
|
||||
Java" by Elliotte Rusty Harold, as located at:
|
||||
|
||||
http://www.ibiblio.org/xml/books/xmljava/chapters/ch02s05.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='1'>
|
||||
<xs:element ref='methodCall'/>
|
||||
<xs:element ref='methodResponse'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="methodCall">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="methodName">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="ASCIIString">
|
||||
<xs:pattern value="([A-Za-z0-9]|/|\.|:|_)*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="params" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="param" type="ParamType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="methodResponse">
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element name="params">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="param" type="ParamType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="fault">
|
||||
<!-- What can appear inside a fault is very restricted -->
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="struct">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="member"
|
||||
type="MemberType">
|
||||
</xs:element>
|
||||
<xs:element name="member"
|
||||
type="MemberType">
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="ParamType">
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="ValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ValueType" mixed="true">
|
||||
<xs:choice>
|
||||
<xs:element name="i4" type="xs:int"/>
|
||||
<xs:element name="int" type="xs:int"/>
|
||||
<xs:element name="string" type="ASCIIString"/>
|
||||
<xs:element name="double" type="xs:decimal"/>
|
||||
<xs:element name="Base64" type="xs:base64Binary"/>
|
||||
<xs:element name="boolean" type="NumericBoolean"/>
|
||||
<xs:element name="dateTime.iso8601" type="xs:dateTime"/>
|
||||
<xs:element name="array" type="ArrayType"/>
|
||||
<xs:element name="struct" type="StructType"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="StructType">
|
||||
<xs:sequence>
|
||||
<xs:element name="member" type="MemberType"
|
||||
maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="MemberType">
|
||||
<xs:sequence>
|
||||
<xs:element name="name" type="xs:string" />
|
||||
<xs:element name="value" type="ValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ArrayType">
|
||||
<xs:sequence>
|
||||
<xs:element name="data">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="ValueType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="ASCIIString">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([ -~]|\n|\r|\t)*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="NumericBoolean">
|
||||
<xs:restriction base="xs:boolean">
|
||||
<xs:pattern value="0|1" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,93 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/mood'
|
||||
xmlns='http://jabber.org/protocol/mood'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0107: http://www.jabber.org/jeps/jep-0107.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='mood'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name='afraid' type='empty'/>
|
||||
<xs:element name='amazed' type='empty'/>
|
||||
<xs:element name='angry' type='empty'/>
|
||||
<xs:element name='annoyed' type='empty'/>
|
||||
<xs:element name='anxious' type='empty'/>
|
||||
<xs:element name='aroused' type='empty'/>
|
||||
<xs:element name='ashamed' type='empty'/>
|
||||
<xs:element name='bored' type='empty'/>
|
||||
<xs:element name='brave' type='empty'/>
|
||||
<xs:element name='calm' type='empty'/>
|
||||
<xs:element name='cold' type='empty'/>
|
||||
<xs:element name='confused' type='empty'/>
|
||||
<xs:element name='contented' type='empty'/>
|
||||
<xs:element name='cranky' type='empty'/>
|
||||
<xs:element name='curious' type='empty'/>
|
||||
<xs:element name='depressed' type='empty'/>
|
||||
<xs:element name='disappointed' type='empty'/>
|
||||
<xs:element name='disgusted' type='empty'/>
|
||||
<xs:element name='distracted' type='empty'/>
|
||||
<xs:element name='embarrassed' type='empty'/>
|
||||
<xs:element name='excited' type='empty'/>
|
||||
<xs:element name='flirtatious' type='empty'/>
|
||||
<xs:element name='frustrated' type='empty'/>
|
||||
<xs:element name='grumpy' type='empty'/>
|
||||
<xs:element name='guilty' type='empty'/>
|
||||
<xs:element name='happy' type='empty'/>
|
||||
<xs:element name='hot' type='empty'/>
|
||||
<xs:element name='humbled' type='empty'/>
|
||||
<xs:element name='humiliated' type='empty'/>
|
||||
<xs:element name='hungry' type='empty'/>
|
||||
<xs:element name='hurt' type='empty'/>
|
||||
<xs:element name='impressed' type='empty'/>
|
||||
<xs:element name='in_awe' type='empty'/>
|
||||
<xs:element name='in_love' type='empty'/>
|
||||
<xs:element name='indignant' type='empty'/>
|
||||
<xs:element name='interested' type='empty'/>
|
||||
<xs:element name='intoxicated' type='empty'/>
|
||||
<xs:element name='invincible' type='empty'/>
|
||||
<xs:element name='jealous' type='empty'/>
|
||||
<xs:element name='lonely' type='empty'/>
|
||||
<xs:element name='mean' type='empty'/>
|
||||
<xs:element name='moody' type='empty'/>
|
||||
<xs:element name='nervous' type='empty'/>
|
||||
<xs:element name='neutral' type='empty'/>
|
||||
<xs:element name='offended' type='empty'/>
|
||||
<xs:element name='playful' type='empty'/>
|
||||
<xs:element name='proud' type='empty'/>
|
||||
<xs:element name='relieved' type='empty'/>
|
||||
<xs:element name='remorseful' type='empty'/>
|
||||
<xs:element name='restless' type='empty'/>
|
||||
<xs:element name='sad' type='empty'/>
|
||||
<xs:element name='sarcastic' type='empty'/>
|
||||
<xs:element name='serious' type='empty'/>
|
||||
<xs:element name='shocked' type='empty'/>
|
||||
<xs:element name='shy' type='empty'/>
|
||||
<xs:element name='sick' type='empty'/>
|
||||
<xs:element name='sleepy' type='empty'/>
|
||||
<xs:element name='stressed' type='empty'/>
|
||||
<xs:element name='surprised' type='empty'/>
|
||||
<xs:element name='thirsty' type='empty'/>
|
||||
<xs:element name='worried' type='empty'/>
|
||||
</xs:choice>
|
||||
<xs:element name='text' minOccurs='0' type='xs:string'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/muc#owner'
|
||||
xmlns='http://jabber.org/protocol/muc#owner'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0045: http://www.jabber.org/jeps/jep-0045.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import
|
||||
namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:choice xmlns:xdata='jabber:x:data' minOccurs='0'>
|
||||
<xs:element ref='xdata:x'/>
|
||||
<xs:element ref='destroy'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='destroy'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='password' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='reason' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='jid' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/nick'
|
||||
xmlns='http://jabber.org/protocol/nick'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0172: http://www.jabber.org/jeps/jep-0172.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='nick' type='xs:string'/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,39 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/offline'
|
||||
xmlns='http://jabber.org/protocol/offline'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0013: http://www.jabber.org/jeps/jep-0013.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='offline'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='action' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='remove'/>
|
||||
<xs:enumeration value='view'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,108 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:privacy'
|
||||
xmlns='jabber:iq:privacy'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='active'
|
||||
minOccurs='0'/>
|
||||
<xs:element ref='default'
|
||||
minOccurs='0'/>
|
||||
<xs:element ref='list'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='active'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:NMTOKEN'>
|
||||
<xs:attribute name='name'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='default'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:NMTOKEN'>
|
||||
<xs:attribute name='name'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='list'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='name'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='iq'
|
||||
minOccurs='0'
|
||||
type='empty'/>
|
||||
<xs:element name='message'
|
||||
minOccurs='0'
|
||||
type='empty'/>
|
||||
<xs:element name='presence-in'
|
||||
minOccurs='0'
|
||||
type='empty'/>
|
||||
<xs:element name='presence-out'
|
||||
minOccurs='0'
|
||||
type='empty'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='action' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='allow'/>
|
||||
<xs:enumeration value='deny'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='order'
|
||||
type='xs:unsignedInt'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='group'/>
|
||||
<xs:enumeration value='jid'/>
|
||||
<xs:enumeration value='subscription'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='value'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,87 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/pubsub#errors'
|
||||
xmlns='http://jabber.org/protocol/pubsub#errors'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This namespace is used for error reporting only, as
|
||||
defined in JEP-0060:
|
||||
|
||||
http://www.jabber.org/jeps/jep-0060.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='closed-node' type='empty'/>
|
||||
<xs:element name='configuration-required' type='empty'/>
|
||||
<xs:element name='invalid-jid' type='empty'/>
|
||||
<xs:element name='invalid-options' type='empty'/>
|
||||
<xs:element name='invalid-payload' type='empty'/>
|
||||
<xs:element name='invalid-subid' type='empty'/>
|
||||
<xs:element name='item-forbidden' type='empty'/>
|
||||
<xs:element name='item-required' type='empty'/>
|
||||
<xs:element name='jid-required' type='empty'/>
|
||||
<xs:element name='max-nodes-exceeded' type='empty'/>
|
||||
<xs:element name='nodeid-required' type='empty'/>
|
||||
<xs:element name='not-in-roster-group' type='empty'/>
|
||||
<xs:element name='not-subscribed' type='empty'/>
|
||||
<xs:element name='payload-too-big' type='empty'/>
|
||||
<xs:element name='payload-required' type='empty'/>
|
||||
<xs:element name='pending-subscription' type='empty'/>
|
||||
<xs:element name='presence-subscription-required' type='empty'/>
|
||||
<xs:element name='subid-required' type='empty'/>
|
||||
<xs:element name='unsupported'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='feature' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='collections'/>
|
||||
<xs:enumeration value='config-node'/>
|
||||
<xs:enumeration value='create-and-configure'/>
|
||||
<xs:enumeration value='create-nodes'/>
|
||||
<xs:enumeration value='delete-any'/>
|
||||
<xs:enumeration value='delete-nodes'/>
|
||||
<xs:enumeration value='get-pending'/>
|
||||
<xs:enumeration value='instant-nodes'/>
|
||||
<xs:enumeration value='item-ids'/>
|
||||
<xs:enumeration value='leased-subscription'/>
|
||||
<xs:enumeration value='manage-subscriptions'/>
|
||||
<xs:enumeration value='meta-data'/>
|
||||
<xs:enumeration value='modify-affiliations'/>
|
||||
<xs:enumeration value='multi-collection'/>
|
||||
<xs:enumeration value='multi-subscribe'/>
|
||||
<xs:enumeration value='outcast-affiliation'/>
|
||||
<xs:enumeration value='persistent-items'/>
|
||||
<xs:enumeration value='presence-notifications'/>
|
||||
<xs:enumeration value='publish'/>
|
||||
<xs:enumeration value='publisher-affiliation'/>
|
||||
<xs:enumeration value='purge-nodes'/>
|
||||
<xs:enumeration value='retract-items'/>
|
||||
<xs:enumeration value='retrieve-affiliations'/>
|
||||
<xs:enumeration value='retrieve-default'/>
|
||||
<xs:enumeration value='retrieve-items'/>
|
||||
<xs:enumeration value='retrieve-subscriptions'/>
|
||||
<xs:enumeration value='subscribe'/>
|
||||
<xs:enumeration value='subscription-options'/>
|
||||
<xs:enumeration value='subscription-notifications'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name='unsupported-access-model' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,139 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/pubsub#event'
|
||||
xmlns='http://jabber.org/protocol/pubsub#event'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0060: http://www.jabber.org/jeps/jep-0060.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import
|
||||
namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
|
||||
<xs:element name='event'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:element ref='collection'/>
|
||||
<xs:element ref='configuration'/>
|
||||
<xs:element ref='delete'/>
|
||||
<xs:element ref='items'/>
|
||||
<xs:element ref='purge'/>
|
||||
<xs:element ref='subscription'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='collection'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='1'>
|
||||
<xs:element ref='node'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='configuration'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0' xmlns:xdata='jabber:x:data'>
|
||||
<xs:element ref='xdata:x'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='delete'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='items'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='retract' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:any namespace='##other'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='id' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='node'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='id' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='purge'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='retract'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='id' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscription'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subscription' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='pending'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unconfigured'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,127 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/pubsub#owner'
|
||||
xmlns='http://jabber.org/protocol/pubsub#owner'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0060: http://www.jabber.org/jeps/jep-0060.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import
|
||||
namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
|
||||
<xs:element name='pubsub'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:element ref='affiliations'/>
|
||||
<xs:element ref='configure'/>
|
||||
<xs:element ref='delete'/>
|
||||
<xs:element ref='purge'/>
|
||||
<xs:element ref='subscriptions'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='affiliations'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='affiliation' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='affiliation'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='affiliation' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='outcast'/>
|
||||
<xs:enumeration value='owner'/>
|
||||
<xs:enumeration value='publisher'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='configure'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' xmlns:xdata='jabber:x:data'>
|
||||
<xs:element ref='xdata:x'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='node' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='default'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' xmlns:xdata='jabber:x:data'>
|
||||
<xs:element ref='xdata:x'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='delete'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='purge'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscriptions'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='subscription' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscription'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='subscription' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='pending'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unconfigured'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,203 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/pubsub'
|
||||
xmlns='http://jabber.org/protocol/pubsub'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0060: http://www.jabber.org/jeps/jep-0060.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import
|
||||
namespace='jabber:x:data'
|
||||
schemaLocation='http://jabber.org/protocol/x-data/x-data.xsd'/>
|
||||
|
||||
<xs:element name='pubsub'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:sequence>
|
||||
<xs:element ref='create'/>
|
||||
<xs:element ref='configure' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:sequence>
|
||||
<xs:element ref='subscribe' minOccurs='0'/>
|
||||
<xs:element ref='options' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:element ref='affiliations'/>
|
||||
<xs:element ref='items'/>
|
||||
<xs:element ref='publish'/>
|
||||
<xs:element ref='retract'/>
|
||||
<xs:element ref='subscription'/>
|
||||
<xs:element ref='subscriptions'/>
|
||||
<xs:element ref='unsubscribe'/>
|
||||
</xs:choice>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='affiliations'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='affiliation' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='affiliation'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='affiliation' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='outcast'/>
|
||||
<xs:enumeration value='owner'/>
|
||||
<xs:enumeration value='publisher'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='configure'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' xmlns:xdata='jabber:x:data'>
|
||||
<xs:element ref='xdata:x'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='create'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='items'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='max_items' type='xs:positiveInteger' use='optional'/>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
<xs:attribute name='subid' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:any namespace='##other'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='id' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='options'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:any namespace='jabber:x:data'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subid' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='publish'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='retract'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='required'/>
|
||||
<xs:attribute name='notify' type='xs:boolean' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscribe-options'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='required' type='empty' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscribe'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscriptions'>
|
||||
<xs:complexType>
|
||||
<xs:element ref='subscription' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subscription'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='subscribe-options' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subscription' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='pending'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unconfigured'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='unsubscribe'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subid' type='xs:string' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/rsm'
|
||||
xmlns='http://jabber.org/protocol/rsm'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0059: http://www.jabber.org/jeps/jep-0059.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='set'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='after' type='xs:string' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element name='before' type='xs:string' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element name='count' type='xs:int' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element ref='first' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element name='index' type='xs:int' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element name='last' type='xs:string' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element name='max' type='xs:int' minOccurs='0' maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='first'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='index' type='xs:int' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/shim'
|
||||
xmlns='http://jabber.org/protocol/shim'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0131: http://www.jabber.org/jeps/jep-0131.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='headers'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='header' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='header'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='name' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,47 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/si'
|
||||
xmlns='http://jabber.org/protocol/si'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import
|
||||
namespace='http://jabber.org/protocol/feature-neg'
|
||||
schemaLocation='http://jabber.org/protocol/feature-neg/feature-neg.xsd'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0095: http://www.jabber.org/jeps/jep-0095.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='si'>
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This is the root content element. All other elements in
|
||||
this namespace are for communicating error information.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:choice xmlns:fneg='http://jabber.org/protocol/feature-neg'>
|
||||
<xs:element ref='fneg:feature' minOccurs='0'/>
|
||||
<xs:any namespace='##other' minOccurs='0'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='id' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='mime-type' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='profile' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='bad-profile' type='empty'/>
|
||||
<xs:element name='no-valid-streams' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/sipub'
|
||||
xmlns='http://jabber.org/protocol/sipub'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0137: http://www.jabber.org/jeps/jep-0137.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='sipub'>
|
||||
<xs:annotation>
|
||||
<xs:documentation>This is the root content element for advertising a stream.</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:any namespace='##other' minOccurs='1' maxOccurs='1'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='id' type='xs:string' use='required'/>
|
||||
<xs:attribute name='from' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='mime-type' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='profile' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='start'>
|
||||
<xs:annotation>
|
||||
<xs:documentation>This is the element for requesting retrieval of a stream.</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='id' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='starting'>
|
||||
<xs:annotation>
|
||||
<xs:documentation>This is the element for specifying the stream to be retrieved.</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='sid' type='xs:string' use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/soap#fault'
|
||||
xmlns='http://jabber.org/protocol/soap#fault'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0072: http://www.jabber.org/jeps/jep-0072.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='DataEncodingUnknown' type='empty'/>
|
||||
<xs:element name='MustUnderstand' type='empty'/>
|
||||
<xs:element name='Receiver' type='empty'/>
|
||||
<xs:element name='Sender' type='empty'/>
|
||||
<xs:element name='VersionMismatch' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/tune'
|
||||
xmlns='http://jabber.org/protocol/tune'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0118: http://www.jabber.org/jeps/jep-0118.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='tune'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element name='artist' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='title' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='source' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='track' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='length' type='xs:unsignedShort' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='vcard-temp:x:update'
|
||||
xmlns='vcard-temp:x:update'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0153: http://www.jabber.org/jeps/jep-0153.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='photo' minOccurs='0' type='xs:base64Binary'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,79 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/waitinglist'
|
||||
xmlns='http://jabber.org/protocol/waitinglist'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0130: http://www.jabber.org/jeps/jep-0130.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import namespace='jabber:client'/>
|
||||
|
||||
<xs:element name='waitlist'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='1'>>
|
||||
<xs:all xmlns:xmpp='jabber:client'>
|
||||
<xs:element ref='uri'/>
|
||||
<xs:element ref='name' minOccurs='0'/>
|
||||
<xs:element ref='xmpp:error' minOccurs='0'/>
|
||||
</xs:all>
|
||||
<xs:element ref='remove'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='id'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='jid'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='type'
|
||||
use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='error'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='uri' type='xs:string'>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='scheme'
|
||||
type='xs:NCNAME'
|
||||
use='required'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='name' type='string1023'/>
|
||||
|
||||
<xs:element name='remove' type='empty'/>
|
||||
|
||||
<xs:simpleType name='string1023'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:maxLength value='1023'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,111 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:data'
|
||||
xmlns='jabber:x:data'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0004: http://www.jabber.org/jeps/jep-0004.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='instructions'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'
|
||||
type='xs:string'/>
|
||||
<xs:element name='title' minOccurs='0' type='xs:string'/>
|
||||
<xs:element ref='field' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='reported' minOccurs='0' maxOccurs='1'/>
|
||||
<xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='cancel'/>
|
||||
<xs:enumeration value='form'/>
|
||||
<xs:enumeration value='result'/>
|
||||
<xs:enumeration value='submit'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='field'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='desc' minOccurs='0' type='xs:string'/>
|
||||
<xs:element name='required' minOccurs='0' type='empty'/>
|
||||
<xs:element ref='value' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='option' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='label' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='type' use='optional' default='text-single'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='boolean'/>
|
||||
<xs:enumeration value='fixed'/>
|
||||
<xs:enumeration value='hidden'/>
|
||||
<xs:enumeration value='jid-multi'/>
|
||||
<xs:enumeration value='jid-single'/>
|
||||
<xs:enumeration value='list-multi'/>
|
||||
<xs:enumeration value='list-single'/>
|
||||
<xs:enumeration value='text-multi'/>
|
||||
<xs:enumeration value='text-private'/>
|
||||
<xs:enumeration value='text-single'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='var' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='option'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='value'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='label' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='value' type='xs:string'/>
|
||||
|
||||
<xs:element name='reported'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='field' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
When contained in a "reported" element, the "field" element
|
||||
SHOULD NOT contain a "value" child.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
-->
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='field' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:delay'
|
||||
xmlns='jabber:x:delay'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0091: http://www.jabber.org/jeps/jep-0091.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='from' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='stamp' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:encrypted'
|
||||
xmlns='jabber:x:encrypted'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0027: http://www.jabber.org/jeps/jep-0027.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x' type='xs:string'/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:event'
|
||||
xmlns='jabber:x:event'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0022: http://www.jabber.org/jeps/jep-0022.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='offline' minOccurs='0' type='empty'/>
|
||||
<xs:element name='delivered' minOccurs='0' type='empty'/>
|
||||
<xs:element name='displayed' minOccurs='0' type='empty'/>
|
||||
<xs:element name='composing' minOccurs='0' type='empty'/>
|
||||
<xs:element name='id' minOccurs='0' type='xs:NMTOKEN'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:expire'
|
||||
xmlns='jabber:x:expire'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0023: http://www.jabber.org/jeps/jep-0023.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='seconds' type='xs:unsignedLong' use='required'/>
|
||||
<xs:attribute name='stored' type='xs:unsignedLong' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:oob'
|
||||
xmlns='jabber:x:oob'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0066: http://www.jabber.org/jeps/jep-0066.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='url' type='xs:string' minOccurs='1'/>
|
||||
<xs:element name='desc' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:roster'
|
||||
xmlns='jabber:x:roster'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0093: http://www.jabber.org/jeps/jep-0093.html
|
||||
|
||||
NOTE WELL: This protocol has been superseded by JEP-0144:
|
||||
http://www.jabber.org/jeps/jep-0144.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='group' type='xs:string' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='name' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:x:signed'
|
||||
xmlns='jabber:x:signed'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0027: http://www.jabber.org/jeps/jep-0027.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x' type='xs:string'/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/xdata-layout'
|
||||
xmlns='http://jabber.org/protocol/xdata-layout'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0141: http://www.jabber.org/jeps/jep-0141.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='page'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='text' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='section' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='fieldref' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='reportedref' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='label' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='section'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='text' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='section' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='fieldref' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='reportedref' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:choice>
|
||||
<xs:attribute name='label' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='fieldref'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='var' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='reportedref' type='empty'/>
|
||||
|
||||
<xs:element name='text' type='xs:string'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,65 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/xdata-validate'
|
||||
xmlns='http://jabber.org/protocol/xdata-validate'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='validate'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='1'>
|
||||
<xs:element ref='basic'/>
|
||||
<xs:element ref='open'/>
|
||||
<xs:element ref='range'/>
|
||||
<xs:element ref='regex'/>
|
||||
</xs:choice>
|
||||
<xs:element ref='list-range' minOccurs='0' maxOccurs='1'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='datatype'
|
||||
type='xs:string'
|
||||
use='optional'
|
||||
default='xs:string'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='basic' type='empty'/>
|
||||
|
||||
<xs:element name='open' type='empty'/>
|
||||
|
||||
<xs:element name='range'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='min' use='optional'/>
|
||||
<xs:attribute name='max' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='regex' type='xs:string'/>
|
||||
|
||||
<xs:element name='list-range'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='min'
|
||||
type='xs:unsignedInteger'
|
||||
use='optional'/>
|
||||
<xs:attribute name='max'
|
||||
type='xs:unsignedInteger'
|
||||
use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,207 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xml="http://www.w3.org/XML/1998/namespace"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This is the XML Schema Block Phrasal support module for XHTML
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Block Phrasal
|
||||
This module declares the elements and their attributes used to
|
||||
support block-level phrasal markup.
|
||||
This is the XML Schema block phrasal elements module for XHTML
|
||||
|
||||
* address, blockquote, pre, h1, h2, h3, h4, h5, h6
|
||||
</xs:documentation>
|
||||
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This import brings in the XML namespace attributes
|
||||
The module itself does not provide the schemaLocation
|
||||
and expects the driver schema to provide the
|
||||
actual SchemaLocation.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:import>
|
||||
|
||||
<!-- address -->
|
||||
<xs:attributeGroup name="address.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="address.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="address.type" mixed="true">
|
||||
<xs:group ref="address.content"/>
|
||||
<xs:attributeGroup ref="address.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="address" type="address.type"/>
|
||||
|
||||
<!-- blockquote -->
|
||||
<xs:attributeGroup name="blockquote.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
<xs:attribute name="cite" type="URI"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="blockquote.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Block.mix" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="blockquote.type">
|
||||
<xs:group ref="blockquote.content"/>
|
||||
<xs:attributeGroup ref="blockquote.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="blockquote" type="blockquote.type"/>
|
||||
|
||||
<!-- pre -->
|
||||
<xs:attributeGroup name="pre.attlist">
|
||||
<xs:attribute ref="xml:space"/>
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="pre.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="InlinePre.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="pre.type" mixed="true">
|
||||
<xs:group ref="pre.content"/>
|
||||
<xs:attributeGroup ref="pre.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="pre" type="pre.type"/>
|
||||
|
||||
<!-- Heading Elements -->
|
||||
<xs:attributeGroup name="heading.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:complexType name="heading.type" mixed="true">
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:attributeGroup ref="heading.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:attributeGroup name="h1.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="h1.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="h1.type" mixed="true">
|
||||
<xs:group ref="h1.content"/>
|
||||
<xs:attributeGroup ref="h1.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="h1" type="h1.type"/>
|
||||
|
||||
<xs:attributeGroup name="h2.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="h2.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="h2.type" mixed="true">
|
||||
<xs:group ref="h2.content"/>
|
||||
<xs:attributeGroup ref="h2.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="h2" type="h2.type"/>
|
||||
|
||||
<xs:attributeGroup name="h3.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="h3.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="h3.type" mixed="true">
|
||||
<xs:group ref="h3.content"/>
|
||||
<xs:attributeGroup ref="h3.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="h3" type="h3.type"/>
|
||||
|
||||
<xs:attributeGroup name="h4.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="h4.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="h4.type" mixed="true">
|
||||
<xs:group ref="h4.content"/>
|
||||
<xs:attributeGroup ref="h4.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="h4" type="h4.type"/>
|
||||
|
||||
<xs:attributeGroup name="h5.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="h5.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="h5.type" mixed="true">
|
||||
<xs:group ref="h5.content"/>
|
||||
<xs:attributeGroup ref="h5.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="h5" type="h5.type"/>
|
||||
|
||||
<xs:attributeGroup name="h6.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="h6.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="h6.type" mixed="true">
|
||||
<xs:group ref="h6.content"/>
|
||||
<xs:attributeGroup ref="h6.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="h6" type="h6.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,57 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Block Structural
|
||||
|
||||
* div, p
|
||||
|
||||
This module declares the elements and their attributes used to
|
||||
support block-level structural markup.
|
||||
|
||||
This is the XML Schema Block Structural module for XHTML
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
</xs:annotation>
|
||||
|
||||
<!-- div -->
|
||||
<xs:attributeGroup name="div.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="div.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="div.type" mixed="true">
|
||||
<xs:group ref="div.content"/>
|
||||
<xs:attributeGroup ref="div.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="div" type="div.type"/>
|
||||
|
||||
<!-- p -->
|
||||
<xs:attributeGroup name="p.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="p.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="p.type" mixed="true">
|
||||
<xs:group ref="p.content"/>
|
||||
<xs:attributeGroup ref="p.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="p" type="p.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Hypertext Module
|
||||
This is the XML Schema Hypertext module for XHTML
|
||||
|
||||
* a
|
||||
|
||||
This module declares the anchor ('a') element type, which
|
||||
defines the source of a hypertext link. The destination
|
||||
(or link 'target') is identified via its 'id' attribute
|
||||
rather than the 'name' attribute as was used in HTML.
|
||||
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
<xs:documentation
|
||||
source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_hypertextmodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
|
||||
<xs:attributeGroup name="a.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
<xs:attribute name="href" type="URI"/>
|
||||
<xs:attribute name="charset" type="Charset"/>
|
||||
<xs:attribute name="type" type="ContentType"/>
|
||||
<xs:attribute name="hreflang" type="LanguageCode"/>
|
||||
<xs:attribute name="rel" type="LinkTypes"/>
|
||||
<xs:attribute name="rev" type="LinkTypes"/>
|
||||
<xs:attribute name="accesskey" type="Character"/>
|
||||
<xs:attribute name="tabindex" type="Number"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="a.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="InlNoAnchor.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="a.type" mixed="true">
|
||||
<xs:group ref="a.content"/>
|
||||
<xs:attributeGroup ref="a.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="a" type="a.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,220 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
|
||||
This is the XML Schema module of named XHTML 1.0 content models
|
||||
for XHTML-IM, an XHTML 1.0 Integration Set for use in exchanging
|
||||
marked-up instant messages between entities that conform to
|
||||
the Extensible Messaging and Presence Protocol (XMPP). This
|
||||
Integration Set includes a subset of the modules defined for
|
||||
XHTML 1.0 but does not redefine any existing modules, nor
|
||||
does it define any new modules. Specifically, it includes the
|
||||
following modules only:
|
||||
|
||||
- Structure
|
||||
- Text
|
||||
- Hypertext
|
||||
- List
|
||||
- Image
|
||||
- Style Attribute
|
||||
|
||||
Therefore XHTML-IM uses the following content models:
|
||||
|
||||
Block.mix; Block-like elements, e.g., paragraphs
|
||||
Flow.mix; Any block or inline elements
|
||||
Inline.mix; Character-level elements
|
||||
InlineNoAnchor.class; Anchor element
|
||||
InlinePre.mix; Pre element
|
||||
|
||||
XHTML-IM also uses the following Attribute Groups:
|
||||
|
||||
Core.extra.attrib
|
||||
I18n.extra.attrib
|
||||
Common.extra
|
||||
|
||||
Full documentation of this Integration Set is contained in
|
||||
"JEP-0071: XHTML-IM", a specification published by the
|
||||
Jabber Software Foundation.
|
||||
|
||||
http://www.jabber.org/jeps/jep-0071.html
|
||||
|
||||
</xs:documentation>
|
||||
<xs:documentation source="http://www.jabber.org/jeps/jep-0071.html"/>
|
||||
</xs:annotation>
|
||||
|
||||
<!-- BEGIN ATTRIBUTE GROUPS -->
|
||||
|
||||
<xs:attributeGroup name="Core.extra.attrib"/>
|
||||
<xs:attributeGroup name="I18n.extra.attrib"/>
|
||||
<xs:attributeGroup name="Common.extra">
|
||||
<xs:attributeGroup ref="style.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<!-- END ATTRIBUTE GROUPS -->
|
||||
|
||||
<!-- BEGIN HYPERTEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="Anchor.class">
|
||||
<xs:sequence>
|
||||
<xs:element ref="a"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<!-- END HYPERTEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN IMAGE MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="Image.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="img"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END IMAGE MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN LIST MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="List.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="ul"/>
|
||||
<xs:element ref="ol"/>
|
||||
<xs:element ref="dl"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END LIST MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN TEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="BlkPhras.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="address"/>
|
||||
<xs:element ref="blockquote"/>
|
||||
<xs:element ref="pre"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="BlkStruct.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="div"/>
|
||||
<xs:element ref="p"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="Heading.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="h1"/>
|
||||
<xs:element ref="h2"/>
|
||||
<xs:element ref="h3"/>
|
||||
<xs:element ref="h4"/>
|
||||
<xs:element ref="h5"/>
|
||||
<xs:element ref="h6"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlPhras.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="abbr"/>
|
||||
<xs:element ref="acronym"/>
|
||||
<xs:element ref="cite"/>
|
||||
<xs:element ref="code"/>
|
||||
<xs:element ref="dfn"/>
|
||||
<xs:element ref="em"/>
|
||||
<xs:element ref="kbd"/>
|
||||
<xs:element ref="q"/>
|
||||
<xs:element ref="samp"/>
|
||||
<xs:element ref="strong"/>
|
||||
<xs:element ref="var"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlStruct.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="br"/>
|
||||
<xs:element ref="span"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END TEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN BLOCK COMBINATIONS -->
|
||||
|
||||
<xs:group name="Block.class">
|
||||
<xs:choice>
|
||||
<xs:group ref="BlkPhras.class"/>
|
||||
<xs:group ref="BlkStruct.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END BLOCK COMBINATIONS -->
|
||||
|
||||
<!-- BEGIN INLINE COMBINATIONS -->
|
||||
|
||||
<!-- Any inline content -->
|
||||
<xs:group name="Inline.class">
|
||||
<xs:choice>
|
||||
<xs:group ref="Anchor.class"/>
|
||||
<xs:group ref="Image.class"/>
|
||||
<xs:group ref="InlPhras.class"/>
|
||||
<xs:group ref="InlStruct.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- Inline content contained in a hyperlink -->
|
||||
<xs:group name="InlNoAnchor.class">
|
||||
<xs:choice>
|
||||
<xs:group ref="Image.class"/>
|
||||
<xs:group ref="InlStruct.class"/>
|
||||
<xs:group ref="InlPhras.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END INLINE COMBINATIONS -->
|
||||
|
||||
<!-- BEGIN TOP-LEVEL MIXES -->
|
||||
|
||||
<xs:group name="Block.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Block.class"/>
|
||||
<xs:group ref="Heading.class"/>
|
||||
<xs:group ref="List.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="Flow.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Block.class"/>
|
||||
<xs:group ref="Heading.class"/>
|
||||
<xs:group ref="Inline.class"/>
|
||||
<xs:group ref="List.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="Inline.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Inline.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlNoAnchor.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="InlNoAnchor.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlinePre.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Anchor.class"/>
|
||||
<xs:group ref="InlPhras.class"/>
|
||||
<xs:group ref="InlStruct.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END TOP-LEVEL MIXES -->
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,220 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
|
||||
This is the XML Schema module of named XHTML 1.0 content models
|
||||
for XHTML-IM, an XHTML 1.0 Integration Set for use in exchanging
|
||||
marked-up instant messages between entities that conform to
|
||||
the Extensible Messaging and Presence Protocol (XMPP). This
|
||||
Integration Set includes a subset of the modules defined for
|
||||
XHTML 1.0 but does not redefine any existing modules, nor
|
||||
does it define any new modules. Specifically, it includes the
|
||||
following modules only:
|
||||
|
||||
- Structure
|
||||
- Text
|
||||
- Hypertext
|
||||
- List
|
||||
- Image
|
||||
- Style Attribute
|
||||
|
||||
Therefore XHTML-IM uses the following content models:
|
||||
|
||||
Block.mix; Block-like elements, e.g., paragraphs
|
||||
Flow.mix; Any block or inline elements
|
||||
Inline.mix; Character-level elements
|
||||
InlineNoAnchor.class; Anchor element
|
||||
InlinePre.mix; Pre element
|
||||
|
||||
XHTML-IM also uses the following Attribute Groups:
|
||||
|
||||
Core.extra.attrib
|
||||
I18n.extra.attrib
|
||||
Common.extra
|
||||
|
||||
Full documentation of this Integration Set is contained in
|
||||
"JEP-0071: XHTML-IM", a specification published by the
|
||||
Jabber Software Foundation.
|
||||
|
||||
http://www.jabber.org/jeps/jep-0071.html
|
||||
|
||||
</xs:documentation>
|
||||
<xs:documentation source="http://www.jabber.org/jeps/jep-0071.html"/>
|
||||
</xs:annotation>
|
||||
|
||||
<!-- BEGIN ATTRIBUTE GROUPS -->
|
||||
|
||||
<xs:attributeGroup name="Core.extra.attrib"/>
|
||||
<xs:attributeGroup name="I18n.extra.attrib"/>
|
||||
<xs:attributeGroup name="Common.extra">
|
||||
<xs:attributeGroup ref="style.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<!-- END ATTRIBUTE GROUPS -->
|
||||
|
||||
<!-- BEGIN HYPERTEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="Anchor.class">
|
||||
<xs:sequence>
|
||||
<xs:element ref="a"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<!-- END HYPERTEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN IMAGE MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="Image.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="img"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END IMAGE MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN LIST MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="List.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="ul"/>
|
||||
<xs:element ref="ol"/>
|
||||
<xs:element ref="dl"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END LIST MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN TEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<xs:group name="BlkPhras.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="address"/>
|
||||
<xs:element ref="blockquote"/>
|
||||
<xs:element ref="pre"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="BlkStruct.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="div"/>
|
||||
<xs:element ref="p"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="Heading.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="h1"/>
|
||||
<xs:element ref="h2"/>
|
||||
<xs:element ref="h3"/>
|
||||
<xs:element ref="h4"/>
|
||||
<xs:element ref="h5"/>
|
||||
<xs:element ref="h6"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlPhras.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="abbr"/>
|
||||
<xs:element ref="acronym"/>
|
||||
<xs:element ref="cite"/>
|
||||
<xs:element ref="code"/>
|
||||
<xs:element ref="dfn"/>
|
||||
<xs:element ref="em"/>
|
||||
<xs:element ref="kbd"/>
|
||||
<xs:element ref="q"/>
|
||||
<xs:element ref="samp"/>
|
||||
<xs:element ref="strong"/>
|
||||
<xs:element ref="var"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlStruct.class">
|
||||
<xs:choice>
|
||||
<xs:element ref="br"/>
|
||||
<xs:element ref="span"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END TEXT MODULE "PRIMITIVES" -->
|
||||
|
||||
<!-- BEGIN BLOCK COMBINATIONS -->
|
||||
|
||||
<xs:group name="Block.class">
|
||||
<xs:choice>
|
||||
<xs:group ref="BlkPhras.class"/>
|
||||
<xs:group ref="BlkStruct.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END BLOCK COMBINATIONS -->
|
||||
|
||||
<!-- BEGIN INLINE COMBINATIONS -->
|
||||
|
||||
<!-- Any inline content -->
|
||||
<xs:group name="Inline.class">
|
||||
<xs:choice>
|
||||
<xs:group ref="Anchor.class"/>
|
||||
<xs:group ref="Image.class"/>
|
||||
<xs:group ref="InlPhras.class"/>
|
||||
<xs:group ref="InlStruct.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- Inline content contained in a hyperlink -->
|
||||
<xs:group name="InlNoAnchor.class">
|
||||
<xs:choice>
|
||||
<xs:group ref="Image.class"/>
|
||||
<xs:group ref="InlStruct.class"/>
|
||||
<xs:group ref="InlPhras.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END INLINE COMBINATIONS -->
|
||||
|
||||
<!-- BEGIN TOP-LEVEL MIXES -->
|
||||
|
||||
<xs:group name="Block.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Block.class"/>
|
||||
<xs:group ref="Heading.class"/>
|
||||
<xs:group ref="List.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="Flow.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Block.class"/>
|
||||
<xs:group ref="Heading.class"/>
|
||||
<xs:group ref="Inline.class"/>
|
||||
<xs:group ref="List.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="Inline.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Inline.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlNoAnchor.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="InlNoAnchor.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:group name="InlinePre.mix">
|
||||
<xs:choice>
|
||||
<xs:group ref="Anchor.class"/>
|
||||
<xs:group ref="InlPhras.class"/>
|
||||
<xs:group ref="InlStruct.class"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<!-- END TOP-LEVEL MIXES -->
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
xmlns:xhtml='http://www.w3.org/1999/xhtml'
|
||||
targetNamespace='http://jabber.org/protocol/xhtml-im'
|
||||
xmlns='http://jabber.org/protocol/xhtml-im'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='http://www.w3.org/1999/xhtml'/>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
|
||||
This schema defines the <html/> element qualified by
|
||||
the 'http://jabber.org/protocol/xhtml-im' namespace.
|
||||
The only allowable child is a <body/> element qualified
|
||||
by the 'http://www.w3.org/1999/xhtml' namespace. Refer
|
||||
to the XHTML-IM schema driver for the definition of the
|
||||
XHTML 1.0 Integration Set.
|
||||
|
||||
Full documentation of this Integration Set is contained in
|
||||
"JEP-0071: XHTML-IM", a specification published by the
|
||||
Jabber Software Foundation.
|
||||
|
||||
http://www.jabber.org/jeps/jep-0071.html
|
||||
|
||||
</xs:documentation>
|
||||
<xs:documentation source="http://www.jabber.org/jeps/jep-0071.html"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='html'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='xhtml:body'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,48 @@
|
|||
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Images
|
||||
This is the XML Schema Images module for XHTML
|
||||
|
||||
* img
|
||||
|
||||
This module provides markup to support basic image embedding.
|
||||
|
||||
To avoid problems with text-only UAs as well as to make
|
||||
image content understandable and navigable to users of
|
||||
non-visual UAs, you need to provide a description with
|
||||
the 'alt' attribute, and avoid server-side image maps.
|
||||
|
||||
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
<xs:documentation
|
||||
source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_imagemodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
|
||||
<xs:attributeGroup name="img.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
<xs:attribute name="src" type="URI" use="required"/>
|
||||
<xs:attribute name="alt" type="Text" use="required"/>
|
||||
<xs:attribute name="longdesc" type="URI"/>
|
||||
<xs:attribute name="height" type="Length"/>
|
||||
<xs:attribute name="width" type="Length"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="img.content">
|
||||
<xs:sequence/>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="img.type">
|
||||
<xs:group ref="img.content"/>
|
||||
<xs:attributeGroup ref="img.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="img" type="img.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,220 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This is the XML Schema Inline Phrasal support module for XHTML
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Inline Phrasal.
|
||||
This module declares the elements and their attributes used to
|
||||
support inline-level phrasal markup.
|
||||
This is the XML Schema Inline Phrasal module for XHTML
|
||||
|
||||
* abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
|
||||
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
|
||||
<xs:attributeGroup name="abbr.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="abbr.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="abbr.type" mixed="true">
|
||||
<xs:group ref="abbr.content"/>
|
||||
<xs:attributeGroup ref="abbr.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="abbr" type="abbr.type"/>
|
||||
|
||||
<xs:attributeGroup name="acronym.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="acronym.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="acronym.type" mixed="true">
|
||||
<xs:group ref="acronym.content"/>
|
||||
<xs:attributeGroup ref="acronym.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="acronym" type="acronym.type"/>
|
||||
|
||||
<xs:attributeGroup name="cite.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="cite.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="cite.type" mixed="true">
|
||||
<xs:group ref="cite.content"/>
|
||||
<xs:attributeGroup ref="cite.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="cite" type="cite.type"/>
|
||||
|
||||
<xs:attributeGroup name="code.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="code.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="code.type" mixed="true">
|
||||
<xs:group ref="code.content"/>
|
||||
<xs:attributeGroup ref="code.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="code" type="code.type"/>
|
||||
|
||||
<xs:attributeGroup name="dfn.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="dfn.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="dfn.type" mixed="true">
|
||||
<xs:group ref="dfn.content"/>
|
||||
<xs:attributeGroup ref="dfn.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="dfn" type="dfn.type"/>
|
||||
|
||||
<xs:attributeGroup name="em.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="em.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="em.type" mixed="true">
|
||||
<xs:group ref="em.content"/>
|
||||
<xs:attributeGroup ref="em.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="em" type="em.type"/>
|
||||
|
||||
|
||||
<xs:attributeGroup name="kbd.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="kbd.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="kbd.type" mixed="true">
|
||||
<xs:group ref="kbd.content"/>
|
||||
<xs:attributeGroup ref="kbd.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="kbd" type="kbd.type"/>
|
||||
|
||||
|
||||
<xs:attributeGroup name="samp.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="samp.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="samp.type" mixed="true">
|
||||
<xs:group ref="samp.content"/>
|
||||
<xs:attributeGroup ref="samp.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="samp" type="samp.type"/>
|
||||
|
||||
|
||||
<xs:attributeGroup name="strong.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="strong.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="strong.type" mixed="true">
|
||||
<xs:group ref="strong.content"/>
|
||||
<xs:attributeGroup ref="strong.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="strong" type="strong.type"/>
|
||||
|
||||
<xs:attributeGroup name="var.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="var.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="var.type" mixed="true">
|
||||
<xs:group ref="var.content"/>
|
||||
<xs:attributeGroup ref="var.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="var" type="var.type"/>
|
||||
|
||||
<xs:attributeGroup name="q.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
<xs:attribute name="cite" type="URI"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="q.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="q.type" mixed="true">
|
||||
<xs:group ref="q.content"/>
|
||||
<xs:attributeGroup ref="q.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="q" type="q.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This is the XML Schema Inline Structural support module for XHTML
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Inline Structural.
|
||||
This module declares the elements and their attributes
|
||||
used to support inline-level structural markup.
|
||||
This is the XML Schema Inline Structural element module for XHTML
|
||||
|
||||
* br, span
|
||||
|
||||
</xs:documentation>
|
||||
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:attributeGroup name="br.attlist">
|
||||
<xs:attributeGroup ref="Core.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="br.content">
|
||||
<xs:sequence/>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="br.type">
|
||||
<xs:group ref="br.content"/>
|
||||
<xs:attributeGroup ref="br.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="br" type="br.type"/>
|
||||
|
||||
<xs:attributeGroup name="span.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="span.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="span.type" mixed="true">
|
||||
<xs:group ref="span.content"/>
|
||||
<xs:attributeGroup ref="span.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="span" type="span.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Inline Style module
|
||||
This is the XML Schema Inline Style module for XHTML
|
||||
|
||||
* styloe attribute
|
||||
|
||||
This module declares the 'style' attribute, used to support inline
|
||||
style markup.
|
||||
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
<xs:documentation
|
||||
source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_styleattributemodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:attributeGroup name="style.attrib">
|
||||
<xs:attribute name="style" type="CDATA"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
List Module
|
||||
This is the XML Schema Lists module for XHTML
|
||||
List Module Elements
|
||||
|
||||
* dl, dt, dd, ol, ul, li
|
||||
|
||||
This module declares the list-oriented element types
|
||||
and their attributes.
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
<xs:documentation
|
||||
source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_listmodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:attributeGroup name="dt.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="dt.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="dt.type" mixed="true">
|
||||
<xs:group ref="dt.content"/>
|
||||
<xs:attributeGroup ref="dt.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="dt" type="dt.type"/>
|
||||
|
||||
<xs:attributeGroup name="dd.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="dd.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="dd.type" mixed="true">
|
||||
<xs:group ref="dd.content"/>
|
||||
<xs:attributeGroup ref="dd.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="dd" type="dd.type"/>
|
||||
|
||||
<xs:attributeGroup name="dl.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="dl.content">
|
||||
<xs:sequence>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element ref="dt"/>
|
||||
<xs:element ref="dd"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="dl.type">
|
||||
<xs:group ref="dl.content"/>
|
||||
<xs:attributeGroup ref="dl.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="dl" type="dl.type"/>
|
||||
|
||||
<xs:attributeGroup name="li.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="li.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="li.type" mixed="true">
|
||||
<xs:group ref="li.content"/>
|
||||
<xs:attributeGroup ref="li.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="li" type="li.type"/>
|
||||
|
||||
<xs:attributeGroup name="ol.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="ol.content">
|
||||
<xs:sequence>
|
||||
<xs:element ref="li" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="ol.type">
|
||||
<xs:group ref="ol.content"/>
|
||||
<xs:attributeGroup ref="ol.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="ol" type="ol.type"/>
|
||||
|
||||
<xs:attributeGroup name="ul.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="ul.content">
|
||||
<xs:sequence>
|
||||
<xs:element ref="li" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="ul.type">
|
||||
<xs:group ref="ul.content"/>
|
||||
<xs:attributeGroup ref="ul.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="ul" type="ul.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,101 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This is the XML Schema Document Structure module for XHTML
|
||||
Document Structure
|
||||
|
||||
* title, head, body, html
|
||||
|
||||
The Structure Module defines the major structural elements and
|
||||
their attributes.
|
||||
|
||||
$Id$
|
||||
</xs:documentation>
|
||||
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
||||
<xs:documentation
|
||||
source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_structuremodule"/>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:attributeGroup name="title.attlist">
|
||||
<xs:attributeGroup ref="I18n.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="title.content">
|
||||
<xs:sequence/>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="title.type" mixed="true">
|
||||
<xs:group ref="title.content"/>
|
||||
<xs:attributeGroup ref="title.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:element name="title" type="title.type"/>
|
||||
|
||||
<xs:group name="head.content">
|
||||
<xs:sequence>
|
||||
<xs:element ref="title"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:attributeGroup name="profile.attrib">
|
||||
<xs:attribute name="profile" type="URI"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:attributeGroup name="head.attlist">
|
||||
<xs:attributeGroup ref="profile.attrib"/>
|
||||
<xs:attributeGroup ref="I18n.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:complexType name="head.type">
|
||||
<xs:group ref="head.content"/>
|
||||
<xs:attributeGroup ref="head.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="head" type="head.type"/>
|
||||
|
||||
<xs:attributeGroup name="body.attlist">
|
||||
<xs:attributeGroup ref="Common.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="body.content">
|
||||
<xs:sequence>
|
||||
<xs:group ref="Block.mix" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="body.type">
|
||||
<xs:group ref="body.content"/>
|
||||
<xs:attributeGroup ref="body.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="body" type="body.type"/>
|
||||
|
||||
<xs:attributeGroup name="version.attrib">
|
||||
<xs:attribute name="version" type="FPI"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:attributeGroup name="html.attlist">
|
||||
<xs:attributeGroup ref="version.attrib"/>
|
||||
<xs:attributeGroup ref="I18n.attrib"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
<xs:group name="html.content">
|
||||
<xs:sequence>
|
||||
<xs:element ref="head"/>
|
||||
<xs:element ref="body"/>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="html.type">
|
||||
<xs:group ref="html.content"/>
|
||||
<xs:attributeGroup ref="html.attlist"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="html" type="html.type"/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,476 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp;
|
||||
|
||||
import ietf.params.xml.ns.xmpp_sasl.Auth;
|
||||
import ietf.params.xml.ns.xmpp_sasl.Challenge;
|
||||
import ietf.params.xml.ns.xmpp_sasl.Success;
|
||||
import ietf.params.xml.ns.xmpp_tls.Proceed;
|
||||
import ietf.params.xml.ns.xmpp_tls.Starttls;
|
||||
import jabber.client.Body;
|
||||
import jabber.client.Error;
|
||||
import jabber.client.Iq;
|
||||
import jabber.client.Message;
|
||||
import jabber.client.Presence;
|
||||
import jabber.iq.auth.Query;
|
||||
import org.apache.activemq.command.*;
|
||||
import org.apache.activemq.transport.xmpp.command.Handler;
|
||||
import org.apache.activemq.transport.xmpp.command.HandlerRegistry;
|
||||
import org.apache.activemq.util.IdGenerator;
|
||||
import org.apache.activemq.util.LongSequenceGenerator;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.jabber.protocol.disco_info.Feature;
|
||||
import org.jabber.protocol.disco_info.Identity;
|
||||
import org.jabber.protocol.disco_items.Item;
|
||||
import org.jabber.protocol.muc_user.X;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import javax.jms.JMSException;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* TODO lots of this code could be shared with Stomp
|
||||
*/
|
||||
public class ProtocolConverter {
|
||||
private static final transient Log log = LogFactory.getLog(ProtocolConverter.class);
|
||||
|
||||
private HandlerRegistry registry = new HandlerRegistry();
|
||||
private XmppTransport transport;
|
||||
|
||||
|
||||
private static final IdGenerator connectionIdGenerator = new IdGenerator();
|
||||
private static final IdGenerator clientIdGenerator = new IdGenerator("xmpp");
|
||||
private final ConnectionId connectionId = new ConnectionId(connectionIdGenerator.generateId());
|
||||
private final SessionId sessionId = new SessionId(connectionId, -1);
|
||||
private final ProducerId producerId = new ProducerId(sessionId, 1);
|
||||
|
||||
private final ConnectionInfo connectionInfo = new ConnectionInfo(connectionId);
|
||||
private final SessionInfo sessionInfo = new SessionInfo(sessionId);
|
||||
private final ProducerInfo producerInfo = new ProducerInfo(producerId);
|
||||
|
||||
private final LongSequenceGenerator consumerIdGenerator = new LongSequenceGenerator();
|
||||
private final LongSequenceGenerator messageIdGenerator = new LongSequenceGenerator();
|
||||
private final LongSequenceGenerator transactionIdGenerator = new LongSequenceGenerator();
|
||||
|
||||
private final Map<Integer, Handler<Response>> resposeHandlers = new ConcurrentHashMap<Integer, Handler<Response>>();
|
||||
private final Map<ConsumerId, Handler<MessageDispatch>> subscriptionsByConsumerId = new ConcurrentHashMap<ConsumerId, Handler<MessageDispatch>>();
|
||||
private final Map transactions = new ConcurrentHashMap();
|
||||
|
||||
private final Object commnadIdMutex = new Object();
|
||||
private int lastCommandId;
|
||||
private final AtomicBoolean connected = new AtomicBoolean(false);
|
||||
|
||||
public ProtocolConverter(XmppTransport transport) {
|
||||
this.transport = transport;
|
||||
initialiseRegistry();
|
||||
}
|
||||
|
||||
protected int generateCommandId() {
|
||||
synchronized (commnadIdMutex) {
|
||||
return lastCommandId++;
|
||||
}
|
||||
}
|
||||
|
||||
protected void initialiseRegistry() {
|
||||
// this kinda wiring muck is soooo much cleaner in C# :(
|
||||
registry.registerHandler(Message.class, new Handler<Message>() {
|
||||
public void handle(Message event) throws Exception {
|
||||
onMessage(event);
|
||||
}
|
||||
});
|
||||
registry.registerHandler(Auth.class, new Handler<Auth>() {
|
||||
public void handle(Auth event) throws Exception {
|
||||
onAuth(event);
|
||||
}
|
||||
});
|
||||
registry.registerHandler(Starttls.class, new Handler<Starttls>() {
|
||||
public void handle(Starttls event) throws Exception {
|
||||
onStarttls(event);
|
||||
}
|
||||
});
|
||||
registry.registerHandler(Iq.class, new Handler<Iq>() {
|
||||
public void handle(Iq event) throws Exception {
|
||||
onIq(event);
|
||||
}
|
||||
});
|
||||
registry.registerHandler(Presence.class, new Handler<Presence>() {
|
||||
public void handle(Presence event) throws Exception {
|
||||
onPresence(event);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void onXmppCommand(Object command) throws Exception {
|
||||
// TODO we could do some nice code generation to boost performance
|
||||
// by autogenerating the bytecode to statically lookup a handler from a registry maybe?
|
||||
|
||||
Handler handler = registry.getHandler(command.getClass());
|
||||
if (handler == null) {
|
||||
unknownCommand(command);
|
||||
}
|
||||
else {
|
||||
handler.handle(command);
|
||||
}
|
||||
}
|
||||
|
||||
public void onActiveMQCommad(Command command) throws Exception {
|
||||
if (command.isResponse()) {
|
||||
Response response = (Response) command;
|
||||
Handler<Response> handler = resposeHandlers.remove(new Integer(response.getCorrelationId()));
|
||||
if (handler != null) {
|
||||
handler.handle(response);
|
||||
}
|
||||
}
|
||||
else if (command.isMessageDispatch()) {
|
||||
MessageDispatch md = (MessageDispatch) command;
|
||||
Handler<MessageDispatch> handler = subscriptionsByConsumerId.get(md.getConsumerId());
|
||||
if (handler != null) {
|
||||
handler.handle(md);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void unknownCommand(Object command) throws Exception {
|
||||
log.warn("Unkown command: " + command + " of type: " + command.getClass().getName());
|
||||
}
|
||||
|
||||
protected void onIq(final Iq iq) throws Exception {
|
||||
Object any = iq.getAny();
|
||||
|
||||
if (any instanceof Query) {
|
||||
Query query = (Query) any;
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Iq Auth Query " + debugString(iq) + " resource: " + query.getResource() + " username: " + query.getUsername());
|
||||
}
|
||||
if (query.getPassword() == null) {
|
||||
Iq result = createResult(iq);
|
||||
Query required = new Query();
|
||||
required.setPassword("");
|
||||
required.setUsername("");
|
||||
result.setAny(required);
|
||||
transport.marshall(result);
|
||||
return;
|
||||
}
|
||||
|
||||
//connectionInfo.setClientId(query.getResource());
|
||||
connectionInfo.setUserName(query.getUsername());
|
||||
connectionInfo.setPassword(query.getPassword());
|
||||
|
||||
// TODO support digest?
|
||||
|
||||
if (connectionInfo.getClientId() == null) {
|
||||
connectionInfo.setClientId(clientIdGenerator.generateId());
|
||||
}
|
||||
|
||||
sendToActiveMQ(connectionInfo, new Handler<Response>() {
|
||||
public void handle(Response response) throws Exception {
|
||||
|
||||
Iq result = createResult(iq);
|
||||
|
||||
if (response instanceof ExceptionResponse) {
|
||||
ExceptionResponse exceptionResponse = (ExceptionResponse) response;
|
||||
jabber.client.Error error = new jabber.client.Error();
|
||||
result.setError(error);
|
||||
|
||||
StringWriter buffer = new StringWriter();
|
||||
exceptionResponse.getException().printStackTrace(new PrintWriter(buffer));
|
||||
error.setInternalServerError(buffer.toString());
|
||||
}
|
||||
else {
|
||||
connected.set(true);
|
||||
}
|
||||
transport.marshall(result);
|
||||
|
||||
sendToActiveMQ(sessionInfo, null);
|
||||
sendToActiveMQ(producerInfo, null);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
else if (any instanceof jabber.iq._private.Query) {
|
||||
jabber.iq._private.Query query = (jabber.iq._private.Query) any;
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Iq Private " + debugString(iq) + " any: " + query.getAny());
|
||||
}
|
||||
|
||||
Iq result = createResult(iq);
|
||||
jabber.iq._private.Query answer = new jabber.iq._private.Query();
|
||||
result.setAny(answer);
|
||||
transport.marshall(result);
|
||||
}
|
||||
else if (any instanceof jabber.iq.roster.Query) {
|
||||
jabber.iq.roster.Query query = (jabber.iq.roster.Query) any;
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Iq Roster " + debugString(iq) + " item: " + query.getItem());
|
||||
}
|
||||
|
||||
Iq result = createResult(iq);
|
||||
jabber.iq.roster.Query roster = new jabber.iq.roster.Query();
|
||||
result.setAny(roster);
|
||||
transport.marshall(result);
|
||||
}
|
||||
else if (any instanceof org.jabber.protocol.disco_items.Query) {
|
||||
onDiscoItems(iq, (org.jabber.protocol.disco_items.Query) any);
|
||||
}
|
||||
else if (any instanceof org.jabber.protocol.disco_info.Query) {
|
||||
onDiscoInfo(iq, (org.jabber.protocol.disco_info.Query) any);
|
||||
}
|
||||
else {
|
||||
if (any instanceof Element) {
|
||||
Element element = (Element) any;
|
||||
log.warn("Iq Unknown " + debugString(iq) + " element namespace: " + element.getNamespaceURI() + " localName: " + element.getLocalName());
|
||||
}
|
||||
else {
|
||||
log.warn("Iq Unknown " + debugString(iq) + " any: " + any + " of type: " + any.getClass().getName());
|
||||
}
|
||||
Iq result = createResult(iq);
|
||||
jabber.client.Error error = new Error();
|
||||
error.setUnexpectedRequest("Don't understand: " + any.toString());
|
||||
result.setAny(error);
|
||||
transport.marshall(result);
|
||||
}
|
||||
}
|
||||
|
||||
protected String debugString(Iq iq) {
|
||||
return " to: " + iq.getTo() + " type: " + iq.getType() + " from: " + iq.getFrom() + " id: " + iq.getId();
|
||||
}
|
||||
|
||||
protected void onDiscoItems(Iq iq, org.jabber.protocol.disco_items.Query query) throws IOException {
|
||||
String to = iq.getTo();
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Iq Disco Items query " + debugString(iq) + " node: " + query.getNode() + " item: " + query.getItem());
|
||||
}
|
||||
|
||||
Iq result = createResult(iq);
|
||||
org.jabber.protocol.disco_items.Query answer = new org.jabber.protocol.disco_items.Query();
|
||||
if (to == null || to.length() == 0) {
|
||||
answer.getItem().add(createItem("queues", "Queues", "queues"));
|
||||
answer.getItem().add(createItem("topics", "Topics", "topics"));
|
||||
}
|
||||
else {
|
||||
// lets not add anything?
|
||||
}
|
||||
|
||||
result.setAny(answer);
|
||||
transport.marshall(result);
|
||||
}
|
||||
|
||||
protected void onDiscoInfo(Iq iq, org.jabber.protocol.disco_info.Query query) throws IOException {
|
||||
String to = iq.getTo();
|
||||
|
||||
// TODO lets create the topic 'to'
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Iq Disco Info query " + debugString(iq) + " node: " + query.getNode() + " features: " + query.getFeature() + " identity: " + query.getIdentity());
|
||||
}
|
||||
|
||||
Iq result = createResult(iq);
|
||||
org.jabber.protocol.disco_info.Query answer = new org.jabber.protocol.disco_info.Query();
|
||||
answer.setNode(to);
|
||||
answer.getFeature().add(createFeature("http://jabber.org/protocol/disco#info"));
|
||||
answer.getFeature().add(createFeature("http://jabber.org/protocol/disco#items"));
|
||||
if (to == null || to.length() == 0) {
|
||||
answer.getIdentity().add(createIdentity("directory", "chatroom", "queues"));
|
||||
answer.getIdentity().add(createIdentity("directory", "chatroom", "topics"));
|
||||
/*
|
||||
answer.getIdentity().add(createIdentity("hierarchy", "queues", "branch"));
|
||||
answer.getIdentity().add(createIdentity("hierarchy", "topics", "branch"));
|
||||
*/
|
||||
}
|
||||
else {
|
||||
// for queues/topics
|
||||
if (to.equals("queues")) {
|
||||
answer.getIdentity().add(createIdentity("conference", "queue.a", "text"));
|
||||
answer.getIdentity().add(createIdentity("conference", "queue.b", "text"));
|
||||
}
|
||||
else if (to.equals("topics")) {
|
||||
answer.getIdentity().add(createIdentity("conference", "topic.x", "text"));
|
||||
answer.getIdentity().add(createIdentity("conference", "topic.y", "text"));
|
||||
answer.getIdentity().add(createIdentity("conference", "topic.z", "text"));
|
||||
}
|
||||
else {
|
||||
// lets reply to an actual room
|
||||
answer.getIdentity().add(createIdentity("conference", to, "text"));
|
||||
answer.getFeature().add(createFeature("http://jabber.org/protocol/muc"));
|
||||
answer.getFeature().add(createFeature("muc-open"));
|
||||
}
|
||||
}
|
||||
|
||||
result.setAny(answer);
|
||||
transport.marshall(result);
|
||||
}
|
||||
|
||||
protected void onPresence(Presence presence) throws IOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Presence: " + presence.getFrom() + " id: " + presence.getId() + " to: " + presence.getTo() + " type: " + presence.getType()
|
||||
+ " showOrStatusOrPriority: " + presence.getShowOrStatusOrPriority() + " any: " + presence.getAny());
|
||||
}
|
||||
Presence answer = new Presence();
|
||||
answer.setFrom(presence.getTo());
|
||||
answer.setType(presence.getType());
|
||||
answer.setTo(presence.getFrom());
|
||||
X x = new X();
|
||||
org.jabber.protocol.muc_user.Item item = new org.jabber.protocol.muc_user.Item();
|
||||
item.setAffiliation("owner");
|
||||
item.setRole("moderator");
|
||||
item.setNick("broker");
|
||||
x.getDeclineOrDestroyOrInvite().add(item);
|
||||
answer.getShowOrStatusOrPriority().add(x);
|
||||
transport.marshall(answer);
|
||||
}
|
||||
|
||||
|
||||
protected Item createItem(String jid, String name, String node) {
|
||||
Item answer = new Item();
|
||||
answer.setJid(jid);
|
||||
answer.setName(name);
|
||||
answer.setNode(node);
|
||||
return answer;
|
||||
}
|
||||
|
||||
protected Identity createIdentity(String category, String type, String name) {
|
||||
Identity answer = new Identity();
|
||||
answer.setCategory(category);
|
||||
answer.setName(name);
|
||||
answer.setType(type);
|
||||
return answer;
|
||||
}
|
||||
|
||||
protected Feature createFeature(String var) {
|
||||
Feature feature = new Feature();
|
||||
feature.setVar(var);
|
||||
return feature;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a result command from the input
|
||||
*/
|
||||
protected Iq createResult(Iq iq) {
|
||||
Iq result = new Iq();
|
||||
result.setId(iq.getId());
|
||||
result.setFrom(transport.getFrom());
|
||||
result.setTo(iq.getFrom());
|
||||
result.setLang(iq.getLang());
|
||||
result.setType("result");
|
||||
return result;
|
||||
}
|
||||
|
||||
protected void sendToActiveMQ(Command command, Handler<Response> handler) {
|
||||
command.setCommandId(generateCommandId());
|
||||
if (handler != null) {
|
||||
command.setResponseRequired(true);
|
||||
resposeHandlers.put(command.getCommandId(), handler);
|
||||
}
|
||||
transport.getTransportListener().onCommand(command);
|
||||
}
|
||||
|
||||
|
||||
protected void onStarttls(Starttls starttls) throws Exception {
|
||||
log.debug("Starttls");
|
||||
transport.marshall(new Proceed());
|
||||
}
|
||||
|
||||
protected void onMessage(Message message) throws Exception {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Message from: " + message.getFrom() + " to: " + message.getTo() + " subjectOrBodyOrThread: " + message.getSubjectOrBodyOrThread());
|
||||
}
|
||||
|
||||
ActiveMQMessage activeMQMessage = createActiveMQMessage(message);
|
||||
|
||||
ActiveMQDestination destination = createActiveMQDestination(message.getTo());
|
||||
|
||||
activeMQMessage.setMessageId(new MessageId(producerInfo, messageIdGenerator.getNextSequenceId()));
|
||||
activeMQMessage.setDestination(destination);
|
||||
addActiveMQMessageHeaders(activeMQMessage, message);
|
||||
|
||||
MessageDispatch dispatch = new MessageDispatch();
|
||||
dispatch.setDestination(destination);
|
||||
dispatch.setMessage(activeMQMessage);
|
||||
sendToActiveMQ(dispatch, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the Jabber destination name into a destination in ActiveMQ
|
||||
*/
|
||||
protected ActiveMQDestination createActiveMQDestination(String jabberDestination) throws JMSException {
|
||||
if (jabberDestination == null) {
|
||||
return null;
|
||||
}
|
||||
String name = jabberDestination;
|
||||
int idx = jabberDestination.indexOf('@');
|
||||
if (idx > 0) {
|
||||
name = name.substring(0, idx);
|
||||
}
|
||||
return new ActiveMQTopic(name);
|
||||
}
|
||||
|
||||
protected ActiveMQMessage createActiveMQMessage(Message message) throws JMSException {
|
||||
ActiveMQTextMessage answer = new ActiveMQTextMessage();
|
||||
String text = "";
|
||||
List<Object> list = message.getSubjectOrBodyOrThread();
|
||||
for (Object object : list) {
|
||||
if (object instanceof Body) {
|
||||
Body body = (Body) object;
|
||||
text = body.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
answer.setText(text);
|
||||
return answer;
|
||||
}
|
||||
|
||||
protected void addActiveMQMessageHeaders(ActiveMQMessage answer, Message message) throws JMSException {
|
||||
answer.setStringProperty("XMPPFrom", message.getFrom());
|
||||
answer.setStringProperty("XMPPID", message.getId());
|
||||
answer.setStringProperty("XMPPLang", message.getLang());
|
||||
answer.setStringProperty("XMPPTo", message.getTo());
|
||||
answer.setJMSType(message.getType());
|
||||
answer.setJMSReplyTo(createActiveMQDestination(message.getFrom()));
|
||||
}
|
||||
|
||||
protected void onAuth(Auth auth) throws Exception {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Auth mechanism: " + auth.getMechanism() + " value: " + auth.getValue());
|
||||
}
|
||||
String value = createChallengeValue(auth);
|
||||
if (value != null) {
|
||||
Challenge challenge = new Challenge();
|
||||
challenge.setValue(value);
|
||||
transport.marshall(challenge);
|
||||
}
|
||||
else {
|
||||
transport.marshall(new Success());
|
||||
}
|
||||
}
|
||||
|
||||
protected String createChallengeValue(Auth auth) {
|
||||
// TODO implement the challenge
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,291 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp;
|
||||
|
||||
import ietf.params.xml.ns.xmpp_sasl.Mechanisms;
|
||||
import org.apache.activemq.command.BrokerInfo;
|
||||
import org.apache.activemq.command.Command;
|
||||
import org.apache.activemq.transport.tcp.TcpBufferedInputStream;
|
||||
import org.apache.activemq.transport.tcp.TcpBufferedOutputStream;
|
||||
import org.apache.activemq.transport.tcp.TcpTransport;
|
||||
import org.apache.activemq.util.IOExceptionSupport;
|
||||
import org.apache.activemq.util.ServiceStopper;
|
||||
import org.apache.activemq.wireformat.WireFormat;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.jabber.etherx.streams.Features;
|
||||
|
||||
import javax.net.SocketFactory;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.Location;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLOutputFactory;
|
||||
import javax.xml.stream.XMLReporter;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.XMLStreamWriter;
|
||||
import javax.xml.stream.events.Attribute;
|
||||
import javax.xml.stream.events.StartElement;
|
||||
import javax.xml.stream.events.XMLEvent;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.Socket;
|
||||
import java.net.URI;
|
||||
|
||||
/**
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class XmppTransport extends TcpTransport {
|
||||
protected static final QName ATTRIBUTE_TO = new QName("to");
|
||||
|
||||
private static final transient Log log = LogFactory.getLog(XmppTransport.class);
|
||||
|
||||
private JAXBContext context;
|
||||
private XMLEventReader xmlReader;
|
||||
private Unmarshaller unmarshaller;
|
||||
private Marshaller marshaller;
|
||||
private XMLStreamWriter xmlWriter;
|
||||
private String to = "client";
|
||||
protected OutputStream outputStream;
|
||||
protected InputStream inputStream;
|
||||
private ProtocolConverter converter;
|
||||
private String from;
|
||||
|
||||
public XmppTransport(WireFormat wireFormat, Socket socket) throws IOException {
|
||||
super(wireFormat, socket);
|
||||
init();
|
||||
}
|
||||
|
||||
public XmppTransport(WireFormat wireFormat, SocketFactory socketFactory, URI uri, URI uri1) throws IOException {
|
||||
super(wireFormat, socketFactory, uri, uri1);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
converter = new ProtocolConverter(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void oneway(Object object) throws IOException {
|
||||
if (object instanceof Command) {
|
||||
Command command = (Command) object;
|
||||
|
||||
if (command instanceof BrokerInfo) {
|
||||
BrokerInfo brokerInfo = (BrokerInfo) command;
|
||||
|
||||
String id = brokerInfo.getBrokerId().toString();
|
||||
from = brokerInfo.getBrokerName();
|
||||
try {
|
||||
writeOpenStream(id, from);
|
||||
|
||||
// now lets write the features
|
||||
Features features = new Features();
|
||||
//features.getAny().add(new Starttls());
|
||||
Mechanisms mechanisms = new Mechanisms();
|
||||
//mechanisms.getMechanism().add("DIGEST-MD5");
|
||||
//mechanisms.getMechanism().add("PLAIN");
|
||||
features.getAny().add(mechanisms);
|
||||
marshall(features);
|
||||
/*
|
||||
xmlWriter.flush();
|
||||
outputStream.flush();
|
||||
*/
|
||||
}
|
||||
catch (XMLStreamException e) {
|
||||
throw IOExceptionSupport.create(e);
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
converter.onActiveMQCommad(command);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw e;
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw IOExceptionSupport.create(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
log.warn("Unkown command: " + object);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Marshalls the given POJO to the client
|
||||
*/
|
||||
public void marshall(Object command) throws IOException {
|
||||
try {
|
||||
marshaller.marshal(command, xmlWriter);
|
||||
xmlWriter.flush();
|
||||
}
|
||||
catch (JAXBException e) {
|
||||
throw IOExceptionSupport.create(e);
|
||||
}
|
||||
catch (XMLStreamException e) {
|
||||
throw IOExceptionSupport.create(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
log.debug("XMPP consumer thread starting");
|
||||
|
||||
try {
|
||||
XMLInputFactory xif = XMLInputFactory.newInstance();
|
||||
xif.setXMLReporter(new XMLReporter() {
|
||||
public void report(String message, String errorType, Object relatedInformation, Location location) throws XMLStreamException {
|
||||
log.warn(message + " errorType: " + errorType + " relatedInfo: " + relatedInformation);
|
||||
}
|
||||
});
|
||||
|
||||
xmlReader = xif.createXMLEventReader(inputStream);
|
||||
|
||||
XMLEvent docStart = xmlReader.nextEvent();
|
||||
|
||||
XMLEvent rootElement = xmlReader.nextTag();
|
||||
|
||||
if (rootElement instanceof StartElement) {
|
||||
StartElement startElement = (StartElement) rootElement;
|
||||
Attribute toAttribute = startElement.getAttributeByName(ATTRIBUTE_TO);
|
||||
if (toAttribute != null) {
|
||||
to = toAttribute.getValue();
|
||||
}
|
||||
}
|
||||
while (true) {
|
||||
if (isStopped()) {
|
||||
break;
|
||||
}
|
||||
|
||||
XMLEvent event = xmlReader.peek();
|
||||
if (event.isStartElement()) {
|
||||
// unmarshal a new object
|
||||
Object object = unmarshaller.unmarshal(xmlReader);
|
||||
if (object != null) {
|
||||
converter.onXmppCommand(object);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (event.getEventType() == XMLEvent.END_ELEMENT) {
|
||||
break;
|
||||
}
|
||||
else if (event.getEventType() == XMLEvent.END_ELEMENT || event.getEventType() == XMLEvent.END_DOCUMENT) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
xmlReader.nextEvent();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (XMLStreamException e) {
|
||||
log.error("XMPP Reader thread caught: " + e, e);
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.error("XMPP Reader thread caught: " + e, e);
|
||||
}
|
||||
try {
|
||||
stop();
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.error("Failed to stop XMPP transport: " + e, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String getFrom() {
|
||||
return from;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doStop(ServiceStopper stopper) throws Exception {
|
||||
if (xmlWriter != null) {
|
||||
try {
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
xmlWriter.close();
|
||||
}
|
||||
catch (XMLStreamException e) {
|
||||
// the client may have closed first so ignore this
|
||||
log.info("Caught trying to close transport: " + e, e);
|
||||
}
|
||||
}
|
||||
if (xmlReader != null) {
|
||||
try {
|
||||
xmlReader.close();
|
||||
}
|
||||
catch (XMLStreamException e) {
|
||||
// the client may have closed first so ignore this
|
||||
log.info("Caught trying to close transport: " + e, e);
|
||||
}
|
||||
}
|
||||
super.doStop(stopper);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initializeStreams() throws Exception {
|
||||
// TODO it would be preferable to use class discovery here!
|
||||
context = JAXBContext.newInstance("jabber.client" + ":jabber.server"
|
||||
+ ":jabber.iq._private" + ":jabber.iq.auth" + ":jabber.iq.gateway" + ":jabber.iq.last" + ":jabber.iq.oob"
|
||||
+ ":jabber.iq.pass" + ":jabber.iq.roster" + ":jabber.iq.time" + ":jabber.iq.version"
|
||||
+ ":org.jabber.etherx.streams" + ":org.jabber.protocol.activity" + ":org.jabber.protocol.address"
|
||||
+ ":org.jabber.protocol.amp" + ":org.jabber.protocol.amp_errors"
|
||||
+ ":org.jabber.protocol.disco_info" + ":org.jabber.protocol.disco_items"
|
||||
+ ":org.jabber.protocol.muc" + ":org.jabber.protocol.muc_admin"
|
||||
+ ":org.jabber.protocol.muc_unique" + ":org.jabber.protocol.muc_user"
|
||||
+ ":ietf.params.xml.ns.xmpp_sasl" + ":ietf.params.xml.ns.xmpp_stanzas"
|
||||
+ ":ietf.params.xml.ns.xmpp_streams" + ":ietf.params.xml.ns.xmpp_tls");
|
||||
|
||||
inputStream = new TcpBufferedInputStream(socket.getInputStream(), 8 * 1024);
|
||||
outputStream = new TcpBufferedOutputStream(socket.getOutputStream(), 16 * 1024);
|
||||
|
||||
unmarshaller = context.createUnmarshaller();
|
||||
marshaller = context.createMarshaller();
|
||||
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
|
||||
}
|
||||
|
||||
protected void writeOpenStream(String id, String from) throws IOException, XMLStreamException {
|
||||
XMLOutputFactory factory = XMLOutputFactory.newInstance();
|
||||
//factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
|
||||
xmlWriter = factory.createXMLStreamWriter(outputStream);
|
||||
|
||||
// write the dummy start tag
|
||||
xmlWriter.writeStartDocument();
|
||||
xmlWriter.writeStartElement("stream", "stream", "http://etherx.jabber.org/streams");
|
||||
xmlWriter.writeDefaultNamespace("jabber:client");
|
||||
xmlWriter.writeNamespace("stream", "http://etherx.jabber.org/streams");
|
||||
xmlWriter.writeAttribute("version", "1.0");
|
||||
xmlWriter.writeAttribute("id", id);
|
||||
if (to == null) {
|
||||
to = "client";
|
||||
}
|
||||
xmlWriter.writeAttribute("to", to);
|
||||
xmlWriter.writeAttribute("from", from);
|
||||
xmlWriter.writeCharacters("\n");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp;
|
||||
|
||||
import org.apache.activemq.transport.Transport;
|
||||
import org.apache.activemq.transport.tcp.TcpTransport;
|
||||
import org.apache.activemq.transport.tcp.TcpTransportFactory;
|
||||
import org.apache.activemq.transport.tcp.TcpTransportServer;
|
||||
import org.apache.activemq.wireformat.WireFormat;
|
||||
|
||||
import javax.net.SocketFactory;
|
||||
import javax.net.ServerSocketFactory;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class XmppTransportFactory extends TcpTransportFactory {
|
||||
|
||||
protected String getDefaultWireFormatType() {
|
||||
return "xmpp";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Transport compositeConfigure(Transport transport, WireFormat format, Map options) {
|
||||
//transport = new StompTransportFilter(transport, new LegacyFrameTranslator());
|
||||
return super.compositeConfigure(transport, format, options);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TcpTransport createTcpTransport(WireFormat wf, SocketFactory socketFactory, URI location, URI localLocation) throws IOException {
|
||||
return new XmppTransport(wf, socketFactory, location, localLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TcpTransportServer createTcpTransportServer(final URI location, ServerSocketFactory serverSocketFactory) throws IOException, URISyntaxException {
|
||||
return new XmppTransportServer(this, location, serverSocketFactory);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp;
|
||||
|
||||
import org.apache.activemq.transport.tcp.TcpTransportServer;
|
||||
import org.apache.activemq.transport.tcp.TcpTransportFactory;
|
||||
import org.apache.activemq.transport.Transport;
|
||||
import org.apache.activemq.wireformat.WireFormat;
|
||||
|
||||
import javax.net.ServerSocketFactory;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.Socket;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class XmppTransportServer extends TcpTransportServer {
|
||||
|
||||
public XmppTransportServer(TcpTransportFactory transportFactory, URI location, ServerSocketFactory serverSocketFactory) throws IOException, URISyntaxException {
|
||||
super(transportFactory, location, serverSocketFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transport createTransport(Socket socket, WireFormat format) throws IOException {
|
||||
return new XmppTransport(format, socket);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,219 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp;
|
||||
|
||||
import org.apache.activemq.util.ByteArrayInputStream;
|
||||
import org.apache.activemq.util.ByteArrayOutputStream;
|
||||
import org.apache.activemq.util.ByteSequence;
|
||||
import org.apache.activemq.wireformat.WireFormat;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* A wire format which uses XMPP format of messages
|
||||
*
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class XmppWireFormat implements WireFormat {
|
||||
private static final Log log = LogFactory.getLog(XmppWireFormat.class);
|
||||
|
||||
private int version = 1;
|
||||
|
||||
public WireFormat copy() {
|
||||
return new XmppWireFormat();
|
||||
}
|
||||
|
||||
/*
|
||||
public Packet readPacket(DataInput in) throws IOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Packet readPacket(int firstByte, DataInput in) throws IOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Packet writePacket(Packet packet, DataOutput out) throws IOException, JMSException {
|
||||
switch (packet.getPacketType()) {
|
||||
case Packet.ACTIVEMQ_MESSAGE:
|
||||
writeMessage((ActiveMQMessage) packet, "", out);
|
||||
break;
|
||||
|
||||
case Packet.ACTIVEMQ_TEXT_MESSAGE:
|
||||
writeTextMessage((ActiveMQTextMessage) packet, out);
|
||||
break;
|
||||
|
||||
case Packet.ACTIVEMQ_BYTES_MESSAGE:
|
||||
writeBytesMessage((ActiveMQBytesMessage) packet, out);
|
||||
break;
|
||||
|
||||
case Packet.ACTIVEMQ_OBJECT_MESSAGE:
|
||||
writeObjectMessage((ActiveMQObjectMessage) packet, out);
|
||||
break;
|
||||
|
||||
case Packet.ACTIVEMQ_MAP_MESSAGE:
|
||||
case Packet.ACTIVEMQ_STREAM_MESSAGE:
|
||||
|
||||
|
||||
case Packet.ACTIVEMQ_BROKER_INFO:
|
||||
case Packet.ACTIVEMQ_CONNECTION_INFO:
|
||||
case Packet.ACTIVEMQ_MSG_ACK:
|
||||
case Packet.CONSUMER_INFO:
|
||||
case Packet.DURABLE_UNSUBSCRIBE:
|
||||
case Packet.INT_RESPONSE_RECEIPT_INFO:
|
||||
case Packet.PRODUCER_INFO:
|
||||
case Packet.RECEIPT_INFO:
|
||||
case Packet.RESPONSE_RECEIPT_INFO:
|
||||
case Packet.SESSION_INFO:
|
||||
case Packet.TRANSACTION_INFO:
|
||||
case Packet.XA_TRANSACTION_INFO:
|
||||
default:
|
||||
log.warn("Ignoring message type: " + packet.getPacketType() + " packet: " + packet);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
|
||||
// /**
|
||||
// * Can this wireformat process packets of this version
|
||||
// * @param version the version number to test
|
||||
// * @return true if can accept the version
|
||||
// */
|
||||
// public boolean canProcessWireFormatVersion(int version){
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * @return the current version of this wire format
|
||||
// */
|
||||
// public int getCurrentWireFormatVersion(){
|
||||
// return 1;
|
||||
// }
|
||||
//
|
||||
// // Implementation methods
|
||||
// //-------------------------------------------------------------------------
|
||||
// protected void writeObjectMessage(ActiveMQObjectMessage message, DataOutput out) throws JMSException, IOException {
|
||||
// Serializable object = message.getObject();
|
||||
// String text = (object != null) ? object.toString() : "";
|
||||
// writeMessage(message, text, out);
|
||||
// }
|
||||
//
|
||||
// protected void writeTextMessage(ActiveMQTextMessage message, DataOutput out) throws JMSException, IOException {
|
||||
// writeMessage(message, message.getText(), out);
|
||||
// }
|
||||
//
|
||||
// protected void writeBytesMessage(ActiveMQBytesMessage message, DataOutput out) throws IOException {
|
||||
// ByteArray data = message.getBodyAsBytes();
|
||||
// String text = encodeBinary(data.getBuf(),data.getOffset(),data.getLength());
|
||||
// writeMessage(message, text, out);
|
||||
// }
|
||||
//
|
||||
// protected void writeMessage(ActiveMQMessage message, String body, DataOutput out) throws IOException {
|
||||
// String type = getXmppType(message);
|
||||
//
|
||||
// StringBuffer buffer = new StringBuffer("<");
|
||||
// buffer.append(type);
|
||||
// buffer.append(" to='");
|
||||
// buffer.append(message.getJMSDestination().toString());
|
||||
// buffer.append("' from='");
|
||||
// buffer.append(message.getJMSReplyTo().toString());
|
||||
// String messageID = message.getJMSMessageID();
|
||||
// if (messageID != null) {
|
||||
// buffer.append("' id='");
|
||||
// buffer.append(messageID);
|
||||
// }
|
||||
//
|
||||
// HashMap properties = message.getProperties();
|
||||
// if (properties != null) {
|
||||
// for (Iterator iter = properties.entrySet().iterator(); iter.hasNext();) {
|
||||
// Map.Entry entry = (Map.Entry) iter.next();
|
||||
// Object key = entry.getKey();
|
||||
// Object value = entry.getValue();
|
||||
// if (value != null) {
|
||||
// buffer.append("' ");
|
||||
// buffer.append(key.toString());
|
||||
// buffer.append("='");
|
||||
// buffer.append(value.toString());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// buffer.append("'>");
|
||||
//
|
||||
// String id = message.getJMSCorrelationID();
|
||||
// if (id != null) {
|
||||
// buffer.append("<thread>");
|
||||
// buffer.append(id);
|
||||
// buffer.append("</thread>");
|
||||
// }
|
||||
// buffer.append(body);
|
||||
// buffer.append("</");
|
||||
// buffer.append(type);
|
||||
// buffer.append(">");
|
||||
//
|
||||
// out.write(buffer.toString().getBytes());
|
||||
// }
|
||||
//
|
||||
// protected String encodeBinary(byte[] data,int offset,int length) {
|
||||
// // TODO
|
||||
// throw new RuntimeException("Not implemented yet!");
|
||||
// }
|
||||
//
|
||||
// protected String getXmppType(ActiveMQMessage message) {
|
||||
// String type = message.getJMSType();
|
||||
// if (type == null) {
|
||||
// type = "message";
|
||||
// }
|
||||
// return type;
|
||||
// }
|
||||
|
||||
|
||||
public ByteSequence marshal(Object command) throws IOException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
DataOutputStream dos = new DataOutputStream(baos);
|
||||
marshal(command, dos);
|
||||
dos.close();
|
||||
return baos.toByteSequence();
|
||||
}
|
||||
|
||||
public Object unmarshal(ByteSequence packet) throws IOException {
|
||||
ByteArrayInputStream stream = new ByteArrayInputStream(packet);
|
||||
DataInputStream dis = new DataInputStream(stream);
|
||||
return unmarshal(dis);
|
||||
}
|
||||
|
||||
public void marshal(Object object, DataOutputStream dataOutputStream) throws IOException {
|
||||
/** TODO */
|
||||
}
|
||||
|
||||
public Object unmarshal(DataInputStream dataInputStream) throws IOException {
|
||||
return null; /** TODO */
|
||||
}
|
||||
|
||||
|
||||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(int version) {
|
||||
this.version = version;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp;
|
||||
|
||||
import org.apache.activemq.wireformat.WireFormat;
|
||||
import org.apache.activemq.wireformat.WireFormatFactory;
|
||||
|
||||
/**
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class XmppWireFormatFactory implements WireFormatFactory {
|
||||
public WireFormat createWireFormat() {
|
||||
return new XmppWireFormat();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp.command;
|
||||
|
||||
/**
|
||||
* Represents a handler of a type of event
|
||||
*
|
||||
* @version $Revision$
|
||||
*/
|
||||
public interface Handler<T> {
|
||||
void handle(T event) throws Exception;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
/**
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.transport.xmpp.command;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A registry of handlers
|
||||
*
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class HandlerRegistry {
|
||||
private Map<Class, Handler> map = new HashMap<Class, Handler>();
|
||||
|
||||
public Handler getHandler(Class eventType) {
|
||||
synchronized (map) {
|
||||
return map.get(eventType);
|
||||
}
|
||||
}
|
||||
|
||||
public void registerHandler(Class eventType, Handler handler) {
|
||||
synchronized (map) {
|
||||
map.put(eventType, handler);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
class=org.apache.activemq.transport.xmpp.XmppTransportFactory
|
|
@ -0,0 +1 @@
|
|||
class=org.apache.activemq.transport.xmpp.XmppWireFormatFactory
|
|
@ -0,0 +1,111 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/activity'
|
||||
xmlns='http://jabber.org/protocol/activity'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0108: http://www.jabber.org/jeps/jep-0108.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='activity'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name='doing_chores' type='general'/>
|
||||
<xs:element name='drinking' type='general'/>
|
||||
<xs:element name='eating' type='general'/>
|
||||
<xs:element name='exercising' type='general'/>
|
||||
<xs:element name='grooming' type='general'/>
|
||||
<xs:element name='having_appointment' type='general'/>
|
||||
<xs:element name='inactive' type='general'/>
|
||||
<xs:element name='relaxing' type='general'/>
|
||||
<xs:element name='talking' type='general'/>
|
||||
<xs:element name='traveling' type='general'/>
|
||||
<xs:element name='working' type='general'/>
|
||||
</xs:choice>
|
||||
<xs:element name='text' minOccurs='0' type='xs:string'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name='general'>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:element name='at_the_spa' type='specific'/>
|
||||
<xs:element name='brushing_teeth' type='specific'/>
|
||||
<xs:element name='buying_groceries' type='specific'/>
|
||||
<xs:element name='cleaning' type='specific'/>
|
||||
<xs:element name='coding' type='specific'/>
|
||||
<xs:element name='commuting' type='specific'/>
|
||||
<xs:element name='cooking' type='specific'/>
|
||||
<xs:element name='cycling' type='specific'/>
|
||||
<xs:element name='day_off' type='specific'/>
|
||||
<xs:element name='doing_maintenance' type='specific'/>
|
||||
<xs:element name='doing_the_dishes' type='specific'/>
|
||||
<xs:element name='doing_the_laundry' type='specific'/>
|
||||
<xs:element name='driving' type='specific'/>
|
||||
<xs:element name='gaming' type='specific'/>
|
||||
<xs:element name='gardening' type='specific'/>
|
||||
<xs:element name='getting_a_haircut' type='specific'/>
|
||||
<xs:element name='going_out' type='specific'/>
|
||||
<xs:element name='hanging_out' type='specific'/>
|
||||
<xs:element name='having_a_beer' type='specific'/>
|
||||
<xs:element name='having_a_snack' type='specific'/>
|
||||
<xs:element name='having_breakfast' type='specific'/>
|
||||
<xs:element name='having_coffee' type='specific'/>
|
||||
<xs:element name='having_dinner' type='specific'/>
|
||||
<xs:element name='having_lunch' type='specific'/>
|
||||
<xs:element name='having_tea' type='specific'/>
|
||||
<xs:element name='hiking' type='specific'/>
|
||||
<xs:element name='in_a_car' type='specific'/>
|
||||
<xs:element name='in_a_meeting' type='specific'/>
|
||||
<xs:element name='in_real_life' type='specific'/>
|
||||
<xs:element name='jogging' type='specific'/>
|
||||
<xs:element name='on_a_bus' type='specific'/>
|
||||
<xs:element name='on_a_plane' type='specific'/>
|
||||
<xs:element name='on_a_train' type='specific'/>
|
||||
<xs:element name='on_a_trip' type='specific'/>
|
||||
<xs:element name='on_the_phone' type='specific'/>
|
||||
<xs:element name='on_vacation' type='specific'/>
|
||||
<xs:element name='other' type='specific'/>
|
||||
<xs:element name='partying' type='specific'/>
|
||||
<xs:element name='playing_sports' type='specific'/>
|
||||
<xs:element name='reading' type='specific'/>
|
||||
<xs:element name='rehearsing' type='specific'/>
|
||||
<xs:element name='running' type='specific'/>
|
||||
<xs:element name='running_an_errand' type='specific'/>
|
||||
<xs:element name='scheduled_holiday' type='specific'/>
|
||||
<xs:element name='shaving' type='specific'/>
|
||||
<xs:element name='shopping' type='specific'/>
|
||||
<xs:element name='skiing' type='specific'/>
|
||||
<xs:element name='sleeping' type='specific'/>
|
||||
<xs:element name='socializing' type='specific'/>
|
||||
<xs:element name='studying' type='specific'/>
|
||||
<xs:element name='sunbathing' type='specific'/>
|
||||
<xs:element name='swimming' type='specific'/>
|
||||
<xs:element name='taking_a_bath' type='specific'/>
|
||||
<xs:element name='taking_a_shower' type='specific'/>
|
||||
<xs:element name='walking' type='specific'/>
|
||||
<xs:element name='walking_the_dog' type='specific'/>
|
||||
<xs:element name='watching_tv' type='specific'/>
|
||||
<xs:element name='watching_a_movie' type='specific'/>
|
||||
<xs:element name='working_out' type='specific'/>
|
||||
<xs:element name='writing' type='specific'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name='specific'>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:any namespace='##other'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/address'
|
||||
xmlns='http://jabber.org/protocol/address'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0033: http://www.jabber.org/jeps/jep-0033.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='addresses'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='address'
|
||||
minOccurs='1'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='address'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='delivered' use='optional' fixed='true'/>
|
||||
<xs:attribute name='desc' use='optional' type='xs:string'/>
|
||||
<xs:attribute name='jid' use='optional' type='xs:string'/>
|
||||
<xs:attribute name='node' use='optional' type='xs:string'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='bcc'/>
|
||||
<xs:enumeration value='cc'/>
|
||||
<xs:enumeration value='noreply'/>
|
||||
<xs:enumeration value='replyroom'/>
|
||||
<xs:enumeration value='replyto'/>
|
||||
<xs:enumeration value='to'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='uri' use='optional' type='xs:string'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/amp#errors'
|
||||
xmlns='http://jabber.org/protocol/amp#errors'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0079: http://www.jabber.org/jeps/jep-0079.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='failed-rules'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='rule' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='rule'>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='action' use='required' type='xs:NCName'/>
|
||||
<xs:attribute name='condition' use='required' type='xs:NCName'/>
|
||||
<xs:attribute name='value' use='required' type='xs:string'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/features/amp'
|
||||
xmlns='http://jabber.org/features/amp'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0079: http://www.jabber.org/jeps/jep-0079.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='amp' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/amp'
|
||||
xmlns='http://jabber.org/protocol/amp'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0079: http://www.jabber.org/jeps/jep-0079.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='amp'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='rule' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from' usage='optional' type='xs:string'/>
|
||||
<xs:attribute name='per-hop' use='optional' type='xs:boolean' default='false'/>
|
||||
<xs:attribute name='status' usage='optional' type='xs:NCName'/>
|
||||
<xs:attribute name='to' usage='optional' type='xs:string'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='invalid-rules'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='rule' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='unsupported-actions'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='rule' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='unsupported-conditions'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='rule' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='rule'>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='action' use='required' type='xs:NCName'/>
|
||||
<xs:attribute name='condition' use='required' type='xs:NCName'/>
|
||||
<xs:attribute name='value' use='required' type='xs:string'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:server:dialback'
|
||||
xmlns='jabber:server:dialback'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='result'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:token'>
|
||||
<xs:attribute name='from' type='xs:string' use='required'/>
|
||||
<xs:attribute name='to' type='xs:string' use='required'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='invalid'/>
|
||||
<xs:enumeration value='valid'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='verify'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:token'>
|
||||
<xs:attribute name='from' type='xs:string' use='required'/>
|
||||
<xs:attribute name='id' type='xs:NMTOKEN' use='required'/>
|
||||
<xs:attribute name='to' type='xs:string' use='required'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='invalid'/>
|
||||
<xs:enumeration value='valid'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version='1.0' encoding='UTF-8' ?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/disco#info'
|
||||
xmlns='http://jabber.org/protocol/disco#info'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0030: http://www.jabber.org/jeps/jep-0030.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element ref='identity' maxOccurs='unbounded'/>
|
||||
<xs:element ref='feature' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='identity'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='category' type='xs:string' use='required'/>
|
||||
<xs:attribute name='name' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='type' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='feature'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='var' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version='1.0' encoding='UTF-8' ?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/disco#items'
|
||||
xmlns='http://jabber.org/protocol/disco#items'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0030: http://www.jabber.org/jeps/jep-0030.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='action' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='remove'/>
|
||||
<xs:enumeration value='update'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='name' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='node' type='xs:string' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,29 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:auth'
|
||||
xmlns='jabber:iq:auth'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0078: http://www.jabber.org/jeps/jep-0078.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='username' type='xs:string' minOccurs='0'/>
|
||||
<xs:choice>
|
||||
<xs:element name='password' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='digest' type='xs:string' minOccurs='0'/>
|
||||
</xs:choice>
|
||||
<xs:element name='resource' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:gateway'
|
||||
xmlns='jabber:iq:gateway'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0100: http://www.jabber.org/jeps/jep-0100.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:sequence>
|
||||
<xs:element name='desc' minOccurs='0' type='xs:string'/>
|
||||
<xs:element name='prompt' type='xs:string'/>
|
||||
</xs:sequence>
|
||||
<xs:element name='jid' type='xs:string'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:last'
|
||||
xmlns='jabber:iq:last'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0012: http://www.jabber.org/jeps/jep-0012.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='seconds' type='xs:unsignedLong' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:oob'
|
||||
xmlns='jabber:iq:oob'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0066: http://www.jabber.org/jeps/jep-0066.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='url' type='xs:string' minOccurs='1'/>
|
||||
<xs:element name='desc' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='sid' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:pass'
|
||||
xmlns='jabber:iq:pass'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0003: http://www.jabber.org/jeps/jep-0003.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element name='client' type='PassEntity'/>
|
||||
<xs:element name='close' type='empty'/>
|
||||
<xs:element name='expire' type='xs:unsignedLong'/>
|
||||
<xs:element name='oneshot' type='empty'/>
|
||||
<xs:element name='proxy' type='PassEntity'/>
|
||||
<xs:element name='server' type='PassEntity'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name='PassEntity'>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:NMTOKEN'>
|
||||
<xs:attribute name='port' type='xs:short' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:private'
|
||||
xmlns='jabber:iq:private'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0049: http://www.jabber.org/jeps/jep-0049.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:any namespace='##other'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:time'
|
||||
xmlns='jabber:iq:time'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0090: http://www.jabber.org/jeps/jep-0090.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element name='utc' type='xs:string' minOccurs='1'/>
|
||||
<xs:element name='tz' type='xs:string' minOccurs='0'/>
|
||||
<xs:element name='display' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:version'
|
||||
xmlns='jabber:iq:version'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0092: http://www.jabber.org/jeps/jep-0092.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs='0'>
|
||||
<xs:element name='name' type='xs:string' minOccurs='1'/>
|
||||
<xs:element name='version' type='xs:string' minOccurs='1'/>
|
||||
<xs:element name='os' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,212 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:client'
|
||||
xmlns='jabber:client'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-stanzas'
|
||||
schemaLocation='stanzaerror.xsd'/>
|
||||
|
||||
<xs:element name='message'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='subject'/>
|
||||
<xs:element ref='body'/>
|
||||
<xs:element ref='thread'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='type' use='optional' default='normal'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='groupchat'/>
|
||||
<xs:enumeration value='headline'/>
|
||||
<xs:enumeration value='normal'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='body'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='nonEmptyString'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subject'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name='thread'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:NMTOKEN'/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<!--
|
||||
<xs:element name='thread' type='xs:NMTOKEN'/>
|
||||
-->
|
||||
|
||||
<xs:element name='presence'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='show'/>
|
||||
<xs:element ref='status'/>
|
||||
<xs:element ref='priority'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='probe'/>
|
||||
<xs:enumeration value='subscribe'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unavailable'/>
|
||||
<xs:enumeration value='unsubscribe'/>
|
||||
<xs:enumeration value='unsubscribed'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='show'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='away'/>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='dnd'/>
|
||||
<xs:enumeration value='xa'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='status'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='statusType'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='priority' type='xs:byte'/>
|
||||
|
||||
<xs:element name='iq'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='required'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='get'/>
|
||||
<xs:enumeration value='result'/>
|
||||
<xs:enumeration value='set'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='error'>
|
||||
<xs:complexType>
|
||||
<xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-stanzas'>
|
||||
<xs:group ref='err:stanzaErrorGroup'/>
|
||||
<xs:element ref='err:text'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='code' type='xs:unsignedShort' use='optional'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='auth'/>
|
||||
<xs:enumeration value='cancel'/>
|
||||
<xs:enumeration value='continue'/>
|
||||
<xs:enumeration value='modify'/>
|
||||
<xs:enumeration value='wait'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='statusType'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:minLength value='1'/>
|
||||
<xs:maxLength value='1024'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name='nonEmptyString'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:minLength value='1'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,201 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:server'
|
||||
xmlns='jabber:server'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-stanzas'
|
||||
schemaLocation='stanzaerror.xsd'/>
|
||||
|
||||
<xs:element name='message'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='subject'/>
|
||||
<xs:element ref='body'/>
|
||||
<xs:element ref='thread'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional' default='normal'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='groupchat'/>
|
||||
<xs:enumeration value='headline'/>
|
||||
<xs:enumeration value='normal'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='body'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='nonEmptyString'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='subject'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='thread' type='xs:NMTOKEN'/>
|
||||
|
||||
<xs:element name='presence'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='show'/>
|
||||
<xs:element ref='status'/>
|
||||
<xs:element ref='priority'/>
|
||||
</xs:choice>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='optional'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='probe'/>
|
||||
<xs:enumeration value='subscribe'/>
|
||||
<xs:enumeration value='subscribed'/>
|
||||
<xs:enumeration value='unavailable'/>
|
||||
<xs:enumeration value='unsubscribe'/>
|
||||
<xs:enumeration value='unsubscribed'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='show'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='away'/>
|
||||
<xs:enumeration value='chat'/>
|
||||
<xs:enumeration value='dnd'/>
|
||||
<xs:enumeration value='xa'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='status'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='statusType'>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='priority' type='xs:byte'/>
|
||||
|
||||
<xs:element name='iq'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:any namespace='##other'
|
||||
minOccurs='0'/>
|
||||
<xs:element ref='error'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='id'
|
||||
type='xs:NMTOKEN'
|
||||
use='required'/>
|
||||
<xs:attribute name='to'
|
||||
type='xs:string'
|
||||
use='required'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='error'/>
|
||||
<xs:enumeration value='get'/>
|
||||
<xs:enumeration value='result'/>
|
||||
<xs:enumeration value='set'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref='xml:lang' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='error'>
|
||||
<xs:complexType>
|
||||
<xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-stanzas'>
|
||||
<xs:group ref='err:stanzaErrorGroup'/>
|
||||
<xs:element ref='err:text'
|
||||
minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='code' type='xs:unsignedShort' use='optional'/>
|
||||
<xs:attribute name='type' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='auth'/>
|
||||
<xs:enumeration value='cancel'/>
|
||||
<xs:enumeration value='continue'/>
|
||||
<xs:enumeration value='modify'/>
|
||||
<xs:enumeration value='wait'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='statusType'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:minLength value='1'/>
|
||||
<xs:maxLength value='1024'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name='nonEmptyString'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:minLength value='1'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/muc#admin'
|
||||
xmlns='http://jabber.org/protocol/muc#admin'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0045: http://www.jabber.org/jeps/jep-0045.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='actor' minOccurs='0'/>
|
||||
<xs:element ref='reason' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='affiliation' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='admin'/>
|
||||
<xs:enumeration value='member'/>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='outcast'/>
|
||||
<xs:enumeration value='owner'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='nick' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='role' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='moderator'/>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='participant'/>
|
||||
<xs:enumeration value='visitor'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='actor'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='reason' type='xs:string'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/muc#unique'
|
||||
xmlns='http://jabber.org/protocol/muc#unique'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
XEP-0045: http://www.xmpp.org/extensions/xep-0045.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='unique' type='xs:string'/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/muc#user'
|
||||
xmlns='http://jabber.org/protocol/muc#user'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0045: http://www.jabber.org/jeps/jep-0045.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='unbounded'>
|
||||
<xs:element ref='decline' minOccurs='0'/>
|
||||
<xs:element ref='destroy' minOccurs='0'/>
|
||||
<xs:element ref='invite' minOccurs='0' maxOccurs='unbounded'/>
|
||||
<xs:element ref='item' minOccurs='0'/>
|
||||
<xs:element name='password' type='xs:string' minOccurs='0'/>
|
||||
<xs:element ref='status' minOccurs='0'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='decline'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='reason' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='to' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='destroy'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='reason' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='jid' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='invite'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='reason' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='from' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='to' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='actor' minOccurs='0'/>
|
||||
<xs:element ref='reason' minOccurs='0'/>
|
||||
<xs:element name='continue' type='empty' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='affiliation' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='admin'/>
|
||||
<xs:enumeration value='member'/>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='outcast'/>
|
||||
<xs:enumeration value='owner'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='nick' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='role' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='moderator'/>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='participant'/>
|
||||
<xs:enumeration value='visitor'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='actor'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='status'>
|
||||
<xs:complexType>
|
||||
<xs:attribute name='code' use='required'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:int'>
|
||||
<xs:length value='3'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='reason' type='xs:string'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/muc'
|
||||
xmlns='http://jabber.org/protocol/muc'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0045: http://www.jabber.org/jeps/jep-0045.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='history' minOccurs='0'/>
|
||||
<xs:element name='password' type='xs:string' minOccurs='0'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='history'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='empty'>
|
||||
<xs:attribute name='maxchars' type='xs:int' use='optional'/>
|
||||
<xs:attribute name='maxstanzas' type='xs:int' use='optional'/>
|
||||
<xs:attribute name='seconds' type='xs:int' use='optional'/>
|
||||
<xs:attribute name='since' type='xs:dateTime' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='jabber:iq:roster'
|
||||
xmlns='jabber:iq:roster'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='query'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='group'
|
||||
minOccurs='0'
|
||||
maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='ask' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='subscribe'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='name' type='xs:string' use='optional'/>
|
||||
<xs:attribute name='subscription' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName'>
|
||||
<xs:enumeration value='both'/>
|
||||
<xs:enumeration value='from'/>
|
||||
<xs:enumeration value='none'/>
|
||||
<xs:enumeration value='remove'/>
|
||||
<xs:enumeration value='to'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='group' type='xs:string'/>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='storage:rosternotes'
|
||||
xmlns='storage:rosternotes'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0045: http://www.jabber.org/jeps/jep-0045.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='storage'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='note' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='note'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='cdate' type='xs:dateTime' use='optional'/>
|
||||
<xs:attribute name='mdate' type='xs:dateTime' use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='http://jabber.org/protocol/rosterx'
|
||||
xmlns='http://jabber.org/protocol/rosterx'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
JEP-0144: http://www.jabber.org/jeps/jep-0144.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name='x'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref='item' minOccurs='1' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='item'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='group' type='xs:string' minOccurs='0' maxOccurs='unbounded'/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name='action' use='optional'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:NCName' default='add'>
|
||||
<xs:enumeration value='add'/>
|
||||
<xs:enumeration value='delete'/>
|
||||
<xs:enumeration value='modify'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name='jid' type='xs:string' use='required'/>
|
||||
<xs:attribute name='name' type='xs:string' use='optional'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,87 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='urn:ietf:params:xml:ns:xmpp-sasl'
|
||||
xmlns='urn:ietf:params:xml:ns:xmpp-sasl'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='mechanisms'>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='mechanism'
|
||||
maxOccurs='unbounded'
|
||||
type='xs:string'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='auth'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'>
|
||||
<xs:attribute name='mechanism'
|
||||
type='xs:string'
|
||||
use='optional'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='challenge'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='response'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='success'>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base='xs:string'/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name='abort'>
|
||||
<xs:complexType>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<!--
|
||||
<xs:element name='challenge' type='xs:string'/>
|
||||
<xs:element name='response' type='xs:string'/>
|
||||
<xs:element name='abort' type='empty'/>
|
||||
<xs:element name='success' type='xs:string'/>
|
||||
-->
|
||||
|
||||
<xs:element name='failure'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0'>
|
||||
<xs:element name='aborted' type='empty'/>
|
||||
<xs:element name='incorrect-encoding' type='empty'/>
|
||||
<xs:element name='invalid-authzid' type='empty'/>
|
||||
<xs:element name='invalid-mechanism' type='empty'/>
|
||||
<xs:element name='mechanism-too-weak' type='empty'/>
|
||||
<xs:element name='not-authorized' type='empty'/>
|
||||
<xs:element name='temporary-auth-failure' type='empty'/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='urn:ietf:params:xml:ns:xmpp-session'
|
||||
xmlns='urn:ietf:params:xml:ns:xmpp-session'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:element name='session' type='empty'/>
|
||||
|
||||
<xs:simpleType name='empty'>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value=''/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue