added basic query functionality, added listsitem update for lookup items

This commit is contained in:
jomu
2015-02-03 18:20:57 +00:00
parent 9273402000
commit cae65ce01d
15 changed files with 2248 additions and 234 deletions

View File

@ -1,16 +1,3 @@
/*
* File: $$RCSfile$$
*
* Copyright (c) 2011 by Wincor Nixdorf,
* Heinz-Nixdorf-Ring 1, 33106 Paderborn, Germany
*
* This software is the confidential and proprietary information
* of Wincor Nixdorf.
*
* You shall not disclose such confidential information and shall
* use it only in accordance with the terms of the license agreement
* you entered into with Wincor Nixdorf.
*/
package de.muehlencord.shared.sharepoint.api;
import java.io.IOException;
@ -18,7 +5,6 @@ import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.List;
import java.util.logging.Level;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@ -81,7 +67,7 @@ public abstract class SPJaxbObject<T> extends SPObject {
return null;
}
Schema schema;
Schema schema = null;
try {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
StreamSource[] streamSources = new StreamSource[schemaLocations.size()];
@ -93,7 +79,8 @@ public abstract class SPJaxbObject<T> extends SPObject {
}
schema = sf.newSchema(streamSources);
} catch (Exception ex) {
return null; // TODO add error handling
ex.printStackTrace(); // TODO add error handling
// throw new SAXException ("Cannot convert to object. Reason: "+ex.getMessage(), ex);
}
return schema;
}

View File

@ -1,10 +1,11 @@
package de.muehlencord.shared.sharepoint.api.lists;
import com.microsoft.schemas.sharepoint.soap.lists.GetListCollectionResponse;
import com.microsoft.schemas.sharepoint.soap.lists.GetListResponse.GetListResult;
import com.microsoft.schemas.sharepoint.soap.lists.Lists;
import com.microsoft.schemas.sharepoint.soap.lists.GetListItems;
import com.microsoft.schemas.sharepoint.soap.lists.GetListItems.QueryOptions;
import com.microsoft.schemas.sharepoint.soap.lists.GetListItemsResponse;
import com.microsoft.schemas.sharepoint.soap.lists.GetListResponse;
import com.microsoft.schemas.sharepoint.soap.lists.ListsSoap;
import com.microsoft.schemas.sharepoint.soap.lists.UpdateListItems.Updates;
import com.microsoft.schemas.sharepoint.soap.lists.UpdateListItems;
import de.muehlencord.shared.sharepoint.api.SPContext;
import de.muehlencord.shared.sharepoint.api.SPJaxbObject;
import de.muehlencord.shared.sharepoint.api.SPObject;
@ -14,138 +15,184 @@ import de.muehlencord.shared.sharepoint.api.batch.Method;
import de.muehlencord.shared.sharepoint.api.batch.MethodType;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.xml.bind.JAXBException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.Handler;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
*
* @author jomu
* @author joern.muehlencord
*/
public class SPList extends SPJaxbObject<de.muehlencord.shared.sharepoint.api.lists.Lists> {
public class SPList extends SPJaxbObject<List> {
public SPList(SPContext context) throws JAXBException {
super(de.muehlencord.shared.sharepoint.api.lists.Lists.class, context);
private String listName = null;
public SPList(SPContext context, String listName) throws JAXBException {
super(List.class, context);
getValue().name = listName;
}
@Override
protected List getSchemaLocation() {
List<String> schemaList = new ArrayList();
schemaList.add("/xsd/lists.xsd");
protected java.util.List getSchemaLocation() {
java.util.List<String> schemaList = new ArrayList();
schemaList.add("/xsd/list.xsd");
return schemaList;
}
public List<String> getListNames() throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException, ParseException, JAXBException,
/* *** list information *** */
public String getListName() {
return getValue().name;
}
/* *** queries *** */
public java.util.List<java.util.List<String>> getListItems(java.util.List<String> listColumnNames, String rowLimit) throws NoSuchAlgorithmException,
KeyManagementException, JAXBException, MalformedURLException,
SAXException {
if (this.getValue().lists == null) {
getValueFromSharepoint();
}
List<String> returnList = new LinkedList<>();
this.getValue().lists.stream().
forEach((currentList) -> {
returnList.add(currentList.name);
});
return returnList;
}
public String getListName(String listTitle) throws NoSuchAlgorithmException, KeyManagementException, JAXBException, MalformedURLException, SAXException {
if (this.getValue().lists == null) {
getValueFromSharepoint();
}
//Here are additional parameters that may be set
String viewName = null;
GetListItems.ViewFields viewFields = null;
GetListItems.Query query = null;
QueryOptions queryOptions = new QueryOptions();
String webId = null;
for (de.muehlencord.shared.sharepoint.api.lists.List currentList : this.getValue().lists) {
if (currentList.title.equals(listTitle)) {
return currentList.name;
}
}
return null;
}
GetListItemsResponse.GetListItemsResult result = getListsPort().
getListItems(getValue().name, viewName, query, viewFields, rowLimit, queryOptions, webId);
public void getListColumns(String listName) throws NoSuchAlgorithmException, KeyManagementException, JAXBException, MalformedURLException, SAXException {
GetListResult result = getListsPort(getContext().getSiteURL()).getList(listName);
if (result.getContent() != null) {
java.util.List<java.util.List<String>> returnList = new LinkedList<>();
if (result != null && result.getContent() != null) {
for (Object content : result.getContent()) {
// TODO - handdling more than one result / should not occur
if (content instanceof Element) {
// Parse XML file
// parse XML manually. Attribute list is generated automatically as the columns
// are stored as attribute with ows_<columnname>. This makes an easy to use
// XSD generated java object unhandy.
Element rootElement = (Element) content;
String listsString = SPObject.xmlToString(rootElement.getOwnerDocument());
System.out.println (listsString);
// TODO implement handling
// this.setValue(listsString);
NodeList list = rootElement.getElementsByTagName("z:row");
for (int i = 0; i < list.getLength(); i++) {
java.util.List<String> rowList = new LinkedList<>();
//Gets the attributes of the current row/element
NamedNodeMap attributes = list.item(i).getAttributes();
// include all attributes which are requested by the given column names
// important - blank codes to _x0020_ as blank is not allowed in XML attribute names
for (String columnName : listColumnNames) {
String internalColumnName = "ows_" + columnName.replace(" ", "_x0020_");
if (attributes.getNamedItem(internalColumnName) != null) {
rowList.add(attributes.getNamedItem(internalColumnName).getNodeValue());
} else {
// TODO create better exception handling
throw new JAXBException("Couldn't find the '" + columnName + "' column in the '" + listName + "' list in SharePoint.\n");
}
}
returnList.add(rowList);
}
}
}
}
return returnList; // TODO either return null or return empty lists, currently handled differently
}
public void addListItem(String listName, Map<String, String> data) throws NoSuchAlgorithmException, KeyManagementException, JAXBException,
MalformedURLException, SAXException, ParserConfigurationException, IOException {
List<Map<String, String>> dataList = new LinkedList<>();
/* *** manipulating list items *** */
public void addListItem(String listName, Map<String, String> data) throws NoSuchAlgorithmException, KeyManagementException,
JAXBException, MalformedURLException, SAXException, ParserConfigurationException, IOException {
java.util.List<Map<String, String>> dataList = new LinkedList<>();
dataList.add(data);
addListItems(listName, dataList);
}
public void addListItemByTitle(String listTitle, Map<String, String> data) throws NoSuchAlgorithmException, KeyManagementException, JAXBException,
MalformedURLException, SAXException, ParserConfigurationException, IOException {
List<Map<String, String>> dataList = new LinkedList<>();
dataList.add(data);
addListItems(getListName(listTitle), dataList);
}
public void addListItems(String listName, java.util.List<Map<String, String>> dataList) throws NoSuchAlgorithmException,
KeyManagementException, JAXBException, MalformedURLException, SAXException, ParserConfigurationException, IOException {
public void addListItems(String listName, List<Map<String, String>> dataList) throws NoSuchAlgorithmException, KeyManagementException, JAXBException,
MalformedURLException, SAXException, ParserConfigurationException, IOException {
if (this.getValue().lists == null) {
getValueFromSharepoint();
}
// prepare batch to be posted to sharepoint server
SPBatch batch = new SPBatch(getContext());
for (Integer batchId = 1; batchId <= dataList.size(); batchId++) {
for (Integer batchId = 1; batchId <= dataList.size();
batchId++) {
Method method = new Method();
method.setID(batchId);
method.setCmd(MethodType.NEW);
Map<String, String> data = dataList.get(batchId - 1);
data.keySet().stream().
map((key) -> {
map((String key) -> {
Field field = new Field();
field.setName(key);
field.setName(key.replace(" ", "_x0020_"));
field.setContent(data.get(key));
return field;
}).
forEach((field) -> {
forEach((Field field) -> {
method.getFields().add(field);
});
batch.addMethod(method);
}
// convert batch to node and attach it to update to be executed
Updates updates = new Updates();
String batchXML = batch.getValueXmlString();
System.out.println(batchXML);
UpdateListItems.Updates updates = new UpdateListItems.Updates();
Node node = batch.createSharePointCAMLNode();
updates.getContent().add(node);
// use created update object to execute on sharepoint
getListsPort(getContext().getSiteURL()).updateListItems(listName, updates);
getListsPort().updateListItems(listName, updates);
}
private ListsSoap getListsPort(URL webUrl) throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException {
URL wsURL = new URL(webUrl.toString() + "/_vti_bin/Lists.asmx");
URL wsdlURL = new URL(SPContext.class.getResource("/2010/wsdl/lists.wsdl").toExternalForm());
Lists service = new Lists(wsdlURL);
/* *** information & tools *** */
public Map<String, String> getLookupValueMap(String value, String rowLimit) throws NoSuchAlgorithmException,
KeyManagementException, JAXBException, MalformedURLException, SAXException {
// get list values from sharepoint
java.util.List<String> listColumnNames = new ArrayList<>();
listColumnNames.add("ID");
listColumnNames.add(value);
java.util.List<java.util.List<String>> listItems = getListItems(listColumnNames, rowLimit);
// convert to map from value to <ID>;#<value>
Map<String, String> returnMap = new HashMap<>();
for (java.util.List<String> row : listItems) {
String rowId = row.get(0);
String rowValue = row.get(1);
String rowLookupValue = rowId + ";#" + rowValue;
if (returnMap.containsKey(rowValue)) {
throw new SAXException("Key " + rowValue + " already exists - key values must be unique");
} else {
returnMap.put(rowValue, rowLookupValue);
}
}
return returnMap;
}
public String getColumnNameByDisplayName(String columnDisplayName) throws NoSuchAlgorithmException,
KeyManagementException, JAXBException, MalformedURLException, SAXException {
if (getValue().fields == null) {
getListFromSharepoint(getValue().name);
}
Fields fields = getValue().fields;
for (de.muehlencord.shared.sharepoint.api.lists.Field field : fields.getFields()) {
if (field.getDisplayName().equals(columnDisplayName)) {
return field.getName();
}
}
return null;
}
/* *** private helper methods *** */
private ListsSoap getListsPort() throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException {
java.net.URL contextURL = getContext().getSiteURL();
java.net.URL wsURL = new java.net.URL(contextURL.toString() + "/_vti_bin/Lists.asmx");
java.net.URL wsdlURL = new java.net.URL(SPContext.class.getResource("/2010/wsdl/lists.wsdl").toExternalForm());
com.microsoft.schemas.sharepoint.soap.lists.Lists service = new com.microsoft.schemas.sharepoint.soap.lists.Lists(wsdlURL);
ListsSoap listsPort = service.getListsSoap();
((BindingProvider) listsPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsURL.toString());
@ -157,8 +204,10 @@ public class SPList extends SPJaxbObject<de.muehlencord.shared.sharepoint.api.li
return listsPort;
}
/*
private void getValueFromSharepoint() throws NoSuchAlgorithmException, KeyManagementException, JAXBException, MalformedURLException, SAXException {
GetListCollectionResponse.GetListCollectionResult result = getListsPort(getContext().getSiteURL()).getListCollection();
GetListResponse.GetListResult result = getListsPort().getList(listName);
if (result.getContent() != null) {
for (Object content : result.getContent()) {
@ -167,10 +216,36 @@ public class SPList extends SPJaxbObject<de.muehlencord.shared.sharepoint.api.li
// Parse XML file
Element rootElement = (Element) content;
String listsString = SPObject.xmlToString(rootElement.getOwnerDocument());
System.out.println (listsString);
this.setValue(listsString);
}
}
}
}
*/
private void getListFromSharepoint(String listName) throws NoSuchAlgorithmException, KeyManagementException, JAXBException, MalformedURLException, SAXException {
GetListResponse.GetListResult result = getListsPort().getList(listName);
if (result.getContent() != null) {
for (Object content : result.getContent()) {
// TODO - handdling more than one result / should not occur
if (content instanceof Element) {
// Parse XML file
Element rootElement = (Element) content;
String listsString = SPObject.xmlToString(rootElement.getOwnerDocument());
System.out.println(listsString);
this.setValue(listsString);
}
}
}
}
/* *** unsorted *** */
}
/**
* History:
*
* $$Log$$
*
*/

View File

@ -0,0 +1,138 @@
package de.muehlencord.shared.sharepoint.api.lists;
import com.microsoft.schemas.sharepoint.soap.lists.GetListCollectionResponse;
import com.microsoft.schemas.sharepoint.soap.lists.GetListResponse.GetListResult;
import com.microsoft.schemas.sharepoint.soap.lists.Lists;
import com.microsoft.schemas.sharepoint.soap.lists.ListsSoap;
import de.muehlencord.shared.sharepoint.api.SPContext;
import de.muehlencord.shared.sharepoint.api.SPJaxbObject;
import de.muehlencord.shared.sharepoint.api.SPObject;
import de.muehlencord.shared.sharepoint.api.ServiceLogHandler;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.LinkedList;
import javax.xml.bind.JAXBException;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.Handler;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
/**
*
* @author jomu
*/
public class SPLists extends SPJaxbObject<de.muehlencord.shared.sharepoint.api.lists.Lists> {
/* *** constructors & object methods needed *** */
public SPLists(SPContext context) throws JAXBException {
super(de.muehlencord.shared.sharepoint.api.lists.Lists.class, context);
}
@Override
protected java.util.List getSchemaLocation() {
java.util.List<String> schemaList = new ArrayList();
schemaList.add("/xsd/lists.xsd");
return schemaList;
}
/* ** get list objects *** */
public SPList getSpListByTitle(String listName) throws NoSuchAlgorithmException, KeyManagementException, JAXBException, MalformedURLException, SAXException {
if (this.getValue().lists == null) {
getValueFromSharepoint();
}
List list = getListByTitle(listName);
SPList returnList = new SPList(getContext(), listName);
returnList.setValue(list);
return returnList;
}
/* *** get lists information *** */
public java.util.List<String> getListNames() throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException, ParseException, JAXBException,
SAXException {
if (this.getValue().lists == null) {
getValueFromSharepoint();
}
java.util.List<String> returnList = new LinkedList<>();
this.getValue().lists.stream().
forEach((currentList) -> {
returnList.add(currentList.name);
});
return returnList;
}
public String getListNameByTitle(String listTitle) throws NoSuchAlgorithmException, KeyManagementException, JAXBException,
MalformedURLException, SAXException {
if (this.getValue().lists == null) {
getValueFromSharepoint();
}
for (List list : getValue().lists) {
if (list.title.equals(listTitle)) {
return list.name;
}
}
return null;
}
/* *** private helper methods *** */
private ListsSoap getListsPort() throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException {
URL wsURL = new URL(getContext().getSiteURL().toString() + "/_vti_bin/Lists.asmx");
URL wsdlURL = new URL(SPContext.class.getResource("/2010/wsdl/lists.wsdl").toExternalForm());
Lists service = new Lists(wsdlURL);
ListsSoap listsPort = service.getListsSoap();
((BindingProvider) listsPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsURL.toString());
// log all incoming and outgoing communication - TODO make this configurable by DEBUG switch
java.util.List<Handler> handlers = ((BindingProvider) listsPort).getBinding().getHandlerChain();
handlers.add(new ServiceLogHandler());
((BindingProvider) listsPort).getBinding().setHandlerChain(handlers);
return listsPort;
}
private void getValueFromSharepoint() throws NoSuchAlgorithmException, KeyManagementException, JAXBException, MalformedURLException, SAXException {
GetListCollectionResponse.GetListCollectionResult result = getListsPort().getListCollection();
if (result.getContent() != null) {
for (Object content : result.getContent()) {
// TODO - handdling more than one result / should not occur
if (content instanceof Element) {
// Parse XML file
Element rootElement = (Element) content;
String listsString = SPObject.xmlToString(rootElement.getOwnerDocument());
System.out.println(listsString);
this.setValue(listsString);
}
}
}
}
private List getListByTitle(String listTitle) {
for (List list : this.getValue().lists) {
if (list.getTitle().equals(listTitle)) {
return list;
}
}
// return null, if list is not found
return null;
}
private List getListByName(String listName) {
for (List list : this.getValue().lists) {
if (list.getName().equals(listName)) {
return list;
}
}
// return null, if list is not found
return null;
}
}

View File

@ -184,7 +184,7 @@
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="rowLimit" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="queryOptions">
<s:element minOccurs="0" maxOccurs="1" name="QueryOptions">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
@ -263,7 +263,7 @@
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="rowLimit" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="queryOptions">
<s:element minOccurs="0" maxOccurs="1" name="QueryOptions">
<s:complexType mixed="true">
<s:sequence>
<s:any/>

View File

@ -0,0 +1,366 @@
<wsdl:definitions xmlns:s0="urn:Microsoft.Search" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://microsoft.com/webservices/OfficeServer/QueryService" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://microsoft.com/webservices/OfficeServer/QueryService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Microsoft SharePoint Server 2013 Preview Search Query Web Service</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search">
<s:element name="Query">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="queryXml" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="QueryResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="QueryResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="Registration">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="registrationXml" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RegistrationResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RegistrationResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="Status">
<s:complexType />
</s:element>
<s:element name="StatusResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="StatusResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecordClick">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="clickInfoXml" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecordClickResponse">
<s:complexType />
</s:element>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/webservices/OfficeServer/QueryService">
<s:element name="QueryEx">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="queryXml" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="QueryExResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="QueryExResult">
<s:complexType>
<s:sequence>
<!-- <s:element ref="s:schema" /> -->
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetPortalSearchInfo">
<s:complexType />
</s:element>
<s:element name="GetPortalSearchInfoResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetPortalSearchInfoResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetSearchMetadata">
<s:complexType />
</s:element>
<s:element name="GetSearchMetadataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetSearchMetadataResult">
<s:complexType>
<s:sequence>
<!-- <s:element ref="s:schema" /> -->
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetQuerySuggestions">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="queryXml" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetQuerySuggestionsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetQuerySuggestionsResult" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="QuerySoapIn">
<wsdl:part name="parameters" element="s0:Query" />
</wsdl:message>
<wsdl:message name="QuerySoapOut">
<wsdl:part name="parameters" element="s0:QueryResponse" />
</wsdl:message>
<wsdl:message name="QueryExSoapIn">
<wsdl:part name="parameters" element="tns:QueryEx" />
</wsdl:message>
<wsdl:message name="QueryExSoapOut">
<wsdl:part name="parameters" element="tns:QueryExResponse" />
</wsdl:message>
<wsdl:message name="RegistrationSoapIn">
<wsdl:part name="parameters" element="s0:Registration" />
</wsdl:message>
<wsdl:message name="RegistrationSoapOut">
<wsdl:part name="parameters" element="s0:RegistrationResponse" />
</wsdl:message>
<wsdl:message name="StatusSoapIn">
<wsdl:part name="parameters" element="s0:Status" />
</wsdl:message>
<wsdl:message name="StatusSoapOut">
<wsdl:part name="parameters" element="s0:StatusResponse" />
</wsdl:message>
<wsdl:message name="GetPortalSearchInfoSoapIn">
<wsdl:part name="parameters" element="tns:GetPortalSearchInfo" />
</wsdl:message>
<wsdl:message name="GetPortalSearchInfoSoapOut">
<wsdl:part name="parameters" element="tns:GetPortalSearchInfoResponse" />
</wsdl:message>
<wsdl:message name="GetSearchMetadataSoapIn">
<wsdl:part name="parameters" element="tns:GetSearchMetadata" />
</wsdl:message>
<wsdl:message name="GetSearchMetadataSoapOut">
<wsdl:part name="parameters" element="tns:GetSearchMetadataResponse" />
</wsdl:message>
<wsdl:message name="RecordClickSoapIn">
<wsdl:part name="parameters" element="s0:RecordClick" />
</wsdl:message>
<wsdl:message name="RecordClickSoapOut">
<wsdl:part name="parameters" element="s0:RecordClickResponse" />
</wsdl:message>
<wsdl:message name="GetQuerySuggestionsSoapIn">
<wsdl:part name="parameters" element="tns:GetQuerySuggestions" />
</wsdl:message>
<wsdl:message name="GetQuerySuggestionsSoapOut">
<wsdl:part name="parameters" element="tns:GetQuerySuggestionsResponse" />
</wsdl:message>
<wsdl:portType name="QueryServiceSoap">
<wsdl:operation name="Query">
<wsdl:input message="tns:QuerySoapIn" />
<wsdl:output message="tns:QuerySoapOut" />
</wsdl:operation>
<wsdl:operation name="QueryEx">
<wsdl:input message="tns:QueryExSoapIn" />
<wsdl:output message="tns:QueryExSoapOut" />
</wsdl:operation>
<wsdl:operation name="Registration">
<wsdl:input message="tns:RegistrationSoapIn" />
<wsdl:output message="tns:RegistrationSoapOut" />
</wsdl:operation>
<wsdl:operation name="Status">
<wsdl:input message="tns:StatusSoapIn" />
<wsdl:output message="tns:StatusSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetPortalSearchInfo">
<wsdl:input message="tns:GetPortalSearchInfoSoapIn" />
<wsdl:output message="tns:GetPortalSearchInfoSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetSearchMetadata">
<wsdl:input message="tns:GetSearchMetadataSoapIn" />
<wsdl:output message="tns:GetSearchMetadataSoapOut" />
</wsdl:operation>
<wsdl:operation name="RecordClick">
<wsdl:input message="tns:RecordClickSoapIn" />
<wsdl:output message="tns:RecordClickSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetQuerySuggestions">
<wsdl:input message="tns:GetQuerySuggestionsSoapIn" />
<wsdl:output message="tns:GetQuerySuggestionsSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="QueryServiceSoap" type="tns:QueryServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Query">
<soap:operation soapAction="urn:Microsoft.Search/Query" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="QueryEx">
<soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/QueryEx" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Registration">
<soap:operation soapAction="urn:Microsoft.Search/Registration" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Status">
<soap:operation soapAction="urn:Microsoft.Search/Status" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetPortalSearchInfo">
<soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetPortalSearchInfo" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetSearchMetadata">
<soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetSearchMetadata" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecordClick">
<soap:operation soapAction="urn:Microsoft.Search/RecordClick" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetQuerySuggestions">
<soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetQuerySuggestions" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="QueryServiceSoap12" type="tns:QueryServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Query">
<soap12:operation soapAction="urn:Microsoft.Search/Query" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="QueryEx">
<soap12:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/QueryEx" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Registration">
<soap12:operation soapAction="urn:Microsoft.Search/Registration" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Status">
<soap12:operation soapAction="urn:Microsoft.Search/Status" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetPortalSearchInfo">
<soap12:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetPortalSearchInfo" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetSearchMetadata">
<soap12:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetSearchMetadata" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecordClick">
<soap12:operation soapAction="urn:Microsoft.Search/RecordClick" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetQuerySuggestions">
<soap:operation soapAction="urn:Microsoft.Search/GetQuerySuggestions" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="QueryService">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Microsoft SharePoint Server 2013 Preview Search Query Web Service</wsdl:documentation>
<wsdl:port name="QueryServiceSoap" binding="tns:QueryServiceSoap">
<soap:address location="" />
</wsdl:port>
<wsdl:port name="QueryServiceSoap12" binding="tns:QueryServiceSoap12">
<soap12:address location="" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="../xsd/listitems.xsd"
node="/xs:schema">
<jxb:globalBindings>
<xjc:simple />
<xjc:serializable uid="100" />
</jxb:globalBindings>
</jxb:bindings>
</jxb:bindings>

View File

@ -0,0 +1,570 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/" xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/">
<xs:element name="List">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="soap:Fields"/>
<xs:element minOccurs="0" ref="soap:RegionalSettings"/>
<xs:element minOccurs="0" ref="soap:ServerSettings"/>
</xs:sequence>
<xs:attribute name="AllowDeletion" use="required" type="xs:string"/>
<xs:attribute name="AllowMultiResponses" use="required" type="xs:string"/>
<xs:attribute name="AnonymousPermMask" use="required" type="xs:int"/>
<xs:attribute name="Author" use="required" type="xs:int"/>
<xs:attribute name="BaseType" use="required" type="xs:int"/>
<xs:attribute name="CanOpenFileAsync" use="required" type="xs:string"/>
<xs:attribute name="Created" use="required"/>
<xs:attribute name="DefaultViewUrl" use="required"/>
<xs:attribute name="Description" use="required"/>
<xs:attribute name="Direction" use="required" type="xs:string"/>
<xs:attribute name="DocTemplateUrl" use="required"/>
<xs:attribute name="EmailAlias" use="required"/>
<xs:attribute name="EnableAttachments" use="required" type="xs:string"/>
<xs:attribute name="EnableFolderCreation" use="required" type="xs:string"/>
<xs:attribute name="EnableMinorVersion" use="required" type="xs:string"/>
<xs:attribute name="EnableModeration" use="required" type="xs:string"/>
<xs:attribute name="EnablePeopleSelector" use="required" type="xs:string"/>
<xs:attribute name="EnableResourceSelector" use="required" type="xs:string"/>
<xs:attribute name="EnableVersioning" use="required" type="xs:string"/>
<xs:attribute name="EnforceDataValidation" use="required" type="xs:string"/>
<xs:attribute name="EventSinkAssembly" use="required"/>
<xs:attribute name="EventSinkClass" use="required"/>
<xs:attribute name="EventSinkData" use="required"/>
<xs:attribute name="ExcludeFromOfflineClient" use="required" type="xs:string"/>
<xs:attribute name="FeatureId" use="required"/>
<xs:attribute name="Flags" use="required" type="xs:int"/>
<xs:attribute name="Followable" use="required" type="xs:string"/>
<xs:attribute name="HasExternalDataSource" use="required" type="xs:string"/>
<xs:attribute name="HasRelatedLists" use="required" type="xs:string"/>
<xs:attribute name="HasUniqueScopes" use="required" type="xs:string"/>
<xs:attribute name="Hidden" use="required" type="xs:string"/>
<xs:attribute name="ID" use="required"/>
<xs:attribute name="ImageUrl" use="required"/>
<xs:attribute name="IrmEnabled" use="required" type="xs:string"/>
<xs:attribute name="IsApplicationList" use="required" type="xs:string"/>
<xs:attribute name="ItemCount" use="required" type="xs:int"/>
<xs:attribute name="LastDeleted" use="required"/>
<xs:attribute name="MajorVersionLimit" use="required" type="xs:int"/>
<xs:attribute name="MajorWithMinorVersionsLimit" use="required" type="xs:int"/>
<xs:attribute name="MaxItemsPerThrottledOperation" use="required" type="xs:int"/>
<xs:attribute name="MobileDefaultViewUrl" use="required"/>
<xs:attribute name="Modified" use="required"/>
<xs:attribute name="MultipleDataList" use="required" type="xs:string"/>
<xs:attribute name="Name" use="required"/>
<xs:attribute name="RelationshipDeleteBehavior" use="optional" type="soap:RelationshipDeleteBehavior"
<xs:attribute name="NoThrottleListOperations" use="required" type="xs:string"/>
<xs:attribute name="Ordered" use="required" type="xs:string"/>
<xs:attribute name="PreserveEmptyValues" use="required" type="xs:string"/>
<xs:attribute name="ReadSecurity" use="required" type="xs:int"/>
<xs:attribute name="RequireCheckout" use="required" type="xs:string"/>
<xs:attribute name="RootFolder" use="required"/>
<xs:attribute name="ScopeId" use="required"/>
<xs:attribute name="SendToLocation" use="required"/>
<xs:attribute name="ServerTemplate" use="required" type="xs:int"/>
<xs:attribute name="ShowUser" use="required" type="xs:string"/>
<xs:attribute name="StrictTypeCoercion" use="required" type="xs:string"/>
<xs:attribute name="ThrottleListOperations" use="required" type="xs:string"/>
<xs:attribute name="ThumbnailSize" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base='xs:int'>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Title" use="required" type="xs:string"/>
<xs:attribute name="Version" use="required" type="xs:int"/>
<xs:attribute name="WebFullUrl" use="required"/>
<xs:attribute name="WebId" use="required"/>
<xs:attribute name="WebImageHeight" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base='xs:int'>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="WebImageWidth" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base='xs:int'>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="WorkFlowId" use="required"/>
<xs:attribute name="WriteSecurity" use="required" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="Fields">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="soap:Field"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RegionalSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:Language"/>
<xs:element ref="soap:Locale"/>
<xs:element ref="soap:AdvanceHijri"/>
<xs:element ref="soap:CalendarType"/>
<xs:element ref="soap:Time24"/>
<xs:element ref="soap:TimeZone"/>
<xs:element ref="soap:SortOrder"/>
<xs:element ref="soap:Presence"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Language" type="xs:int"/>
<xs:element name="Locale" type="xs:int"/>
<xs:element name="AdvanceHijri" type="xs:int"/>
<xs:element name="CalendarType" type="xs:int"/>
<xs:element name="Time24" type="xs:string"/>
<xs:element name="TimeZone" type="xs:int"/>
<xs:element name="SortOrder" type="xs:int"/>
<xs:element name="Presence" type="xs:string"/>
<xs:element name="ServerSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:ServerVersion"/>
<xs:element ref="soap:RecycleBinEnabled"/>
<xs:element ref="soap:ServerRelativeUrl"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ServerVersion" type="xs:NMTOKEN"/>
<xs:element name="RecycleBinEnabled" type="xs:string"/>
<xs:element name="ServerRelativeUrl" type="xs:string"/>
<xs:element name="Field">
<xs:complexType>
<xs:sequence>
<xs:sequence minOccurs="0">
<xs:element ref="soap:CHOICES"/>
<xs:element ref="soap:Default"/>
</xs:sequence>
<xs:element minOccurs="0" ref="soap:FieldRefs"/>
<xs:element minOccurs="0" ref="soap:DisplayPattern"/>
</xs:sequence>
<xs:attribute name="AuthoringInfo"/>
<xs:attribute name="CanToggleHidden" type="xs:string"/>
<xs:attribute name="ClassInfo" type="xs:string"/>
<xs:attribute name="ColName" type="xs:string"/>
<xs:attribute name="Description"/>
<xs:attribute name="Dir"/>
<xs:attribute name="DisplaceOnUpgrade" type="xs:string"/>
<xs:attribute name="DisplayName"/>
<xs:attribute name="DisplayNameSrcField" type="xs:string"/>
<xs:attribute name="EnableLookup" type="xs:string"/>
<xs:attribute name="EnforceUniqueValues" type="xs:string"/>
<xs:attribute name="FieldRef" type="xs:string"/>
<xs:attribute name="Filterable" type="xs:string"/>
<xs:attribute name="Format" type="xs:string"/>
<xs:attribute name="FromBaseType" type="xs:string"/>
<xs:attribute name="Group" type="xs:string"/>
<xs:attribute name="HeaderImage" type="xs:string"/>
<xs:attribute name="Hidden" type="xs:string"/>
<xs:attribute name="ID"/>
<xs:attribute name="Indexed" type="xs:string"/>
<xs:attribute name="JoinColName" type="xs:string"/>
<xs:attribute name="JoinRowOrdinal" type="xs:int"/>
<xs:attribute name="JoinType" type="xs:string"/>
<xs:attribute name="LinkToItemAllowed" type="xs:string"/>
<xs:attribute name="List" type="xs:string"/>
<xs:attribute name="ListItemMenuAllowed" type="xs:string"/>
<xs:attribute name="Max" type="xs:int"/>
<xs:attribute name="MaxLength" type="xs:int"/>
<xs:attribute name="Min" type="xs:int"/>
<xs:attribute name="Name" use="required" type="xs:string"/>
<xs:attribute name="PIAttribute" type="xs:string"/>
<xs:attribute name="PITarget"/>
<xs:attribute name="PrimaryKey" type="xs:string"/>
<xs:attribute name="ReadOnly" type="xs:string"/>
<xs:attribute name="RenderXMLUsingPattern" type="xs:string"/>
<xs:attribute name="Required" type="xs:string"/>
<xs:attribute name="RowOrdinal" type="xs:int"/>
<xs:attribute name="Sealed" type="xs:string"/>
<xs:attribute name="SetAs" type="xs:string"/>
<xs:attribute name="ShowField" type="xs:string"/>
<xs:attribute name="ShowInFileDlg" type="xs:string"/>
<xs:attribute name="ShowInVersionHistory" type="xs:string"/>
<xs:attribute name="Sortable" type="xs:string"/>
<xs:attribute name="SourceID" type="xs:anyURI"/>
<xs:attribute name="StaticName" type="xs:string"/>
<xs:attribute name="StorageTZ" type="xs:string"/>
<xs:attribute name="TextOnly" type="xs:string"/>
<xs:attribute name="Type" type="xs:string"/>
<xs:attribute name="URLEncodeAsURL" type="xs:string"/>
<xs:attribute name="Version" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="CHOICES">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="soap:CHOICE"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CHOICE" type="xs:string"/>
<xs:element name="FieldRefs">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="soap:FieldRef"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="FieldRef">
<xs:complexType>
<xs:attribute name="Name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="DisplayPattern">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="soap:CurrentRights"/>
<xs:element minOccurs="0" ref="soap:HttpHost"/>
<xs:choice>
<xs:element ref="soap:FieldSwitch"/>
<xs:element ref="soap:IfHasRights"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:Counter"/>
<xs:element ref="soap:Field"/>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:LookupColumn"/>
<xs:element ref="soap:MapToAll"/>
</xs:choice>
</xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="soap:SetVar"/>
<xs:choice minOccurs="0">
<xs:element ref="soap:IfEqual"/>
<xs:element ref="soap:MapToContentType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CurrentRights">
<xs:complexType/>
</xs:element>
<xs:element name="HttpHost">
<xs:complexType>
<xs:attribute name="URLEncodeAsURL" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="IfHasRights">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:RightsChoices"/>
<xs:element ref="soap:Then"/>
<xs:element ref="soap:Else"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RightsChoices">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:RightsGroup"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RightsGroup">
<xs:complexType>
<xs:attribute name="PermEditListItems" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="MapToAll">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:HTML"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="MapToContentType">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:Column"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Default">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Field"/>
<xs:element ref="soap:FieldSwitch"/>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:IfEqual"/>
<xs:element ref="soap:LookupColumn"/>
<xs:element ref="soap:ScriptQuote"/>
<xs:element ref="soap:SetVar"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="HTML" type="xs:string"/>
<xs:element name="Column">
<xs:complexType>
<xs:attribute name="Default"/>
<xs:attribute name="HTMLEncode" type="xs:string"/>
<xs:attribute name="Name" use="required" type="xs:string"/>
<xs:attribute name="URLEncodeAsURL" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="LookupColumn">
<xs:complexType>
<xs:attribute name="HTMLEncode" type="xs:string"/>
<xs:attribute name="IncludeVersions" type="xs:string"/>
<xs:attribute name="Name" use="required" type="xs:string"/>
<xs:attribute name="URLEncodeAsURL" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="GetVar">
<xs:complexType>
<xs:attribute name="HTMLEncode" type="xs:string"/>
<xs:attribute name="Name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Counter">
<xs:complexType>
<xs:attribute name="Type" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="FieldSwitch">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Default"/>
<xs:element ref="soap:Case"/>
<xs:element ref="soap:Expr"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Case">
<xs:complexType>
<xs:choice>
<xs:element ref="soap:Column"/>
<xs:element ref="soap:Field"/>
<xs:element ref="soap:LookupColumn"/>
<xs:element maxOccurs="unbounded" ref="soap:GetVar"/>
</xs:choice>
<xs:attribute name="Value" use="required" type="xs:NMTOKEN"/>
</xs:complexType>
</xs:element>
<xs:element name="Expr">
<xs:complexType>
<xs:choice>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:ListProperty"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Then">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="soap:IfEqual"/>
<xs:element minOccurs="0" ref="soap:Field"/>
<xs:choice minOccurs="0">
<xs:element ref="soap:FieldSwitch"/>
<xs:element ref="soap:IfSubString"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Counter"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:URL"/>
</xs:choice>
<xs:element minOccurs="0" ref="soap:LookupColumn"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="IfSubString">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:Expr1"/>
<xs:element ref="soap:Expr2"/>
<xs:element ref="soap:Then"/>
<xs:element ref="soap:Else"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Else">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="soap:MapToIcon"/>
<xs:element minOccurs="0" ref="soap:SetVar"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:Counter"/>
<xs:element ref="soap:Field"/>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:IfEqual"/>
<xs:element ref="soap:ScriptQuote"/>
<xs:element ref="soap:URL"/>
<xs:element ref="soap:MapToOverlay"/>
<xs:element ref="soap:UrlBaseName"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element ref="soap:LookupColumn"/>
<xs:element ref="soap:IfNew"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MapToOverlay">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:Column"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UrlBaseName">
<xs:complexType>
<xs:sequence>
<xs:element ref="soap:LookupColumn"/>
</xs:sequence>
<xs:attribute name="HTMLEncode" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="IfNew">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="soap:HTML"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="SetVar">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:FieldSwitch"/>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:IfEqual"/>
<xs:element ref="soap:LookupColumn"/>
<xs:element ref="soap:MapToIcon"/>
<xs:element ref="soap:SetVar"/>
<xs:element ref="soap:FilterLink"/>
</xs:choice>
<xs:attribute name="Name" use="required" type="xs:string"/>
<xs:attribute name="Value" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="FilterLink">
<xs:complexType>
<xs:attribute name="Default" use="required"/>
<xs:attribute name="Paged" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="IfEqual">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Else"/>
<xs:element ref="soap:Expr1"/>
<xs:element ref="soap:Expr2"/>
<xs:element ref="soap:Then"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="ScriptQuote">
<xs:complexType>
<xs:choice>
<xs:element ref="soap:Column"/>
<xs:element ref="soap:Field"/>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:ListProperty"/>
<xs:element ref="soap:MapToControl"/>
<xs:element ref="soap:ServerProperty"/>
<xs:element ref="soap:UserID"/>
</xs:choice>
<xs:attribute name="NotAddingQuote" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="MapToControl">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:HTML"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="ServerProperty">
<xs:complexType>
<xs:attribute name="Select" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="UserID">
<xs:complexType>
<xs:attribute name="AllowAnonymous" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="ListProperty">
<xs:complexType>
<xs:attribute name="Select" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Expr1">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:GetVar"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:LookupColumn"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Expr2">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:HTML"/>
<xs:element ref="soap:MapToIcon"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="URL">
<xs:complexType>
<xs:attribute name="Cmd" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="MapToIcon">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="soap:Column"/>
<xs:element ref="soap:HTML"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="RelationshipDeleteBehavior">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration>Restrict</xs:enumeration>
<xs:enumeration>Cascade</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>

View File

@ -1,79 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/" xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/">
<xs:element name="Lists">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="soap:List"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="List">
<xs:complexType>
<xs:attribute name="AllowDeletion" use="required" type="xs:NCName"/>
<xs:attribute name="AllowMultiResponses" use="required" type="xs:NCName"/>
<xs:attribute name="AnonymousPermMask" use="required" type="xs:integer"/>
<xs:attribute name="Author" use="required" type="xs:integer"/>
<xs:attribute name="BaseType" use="required" type="xs:integer"/>
<xs:attribute name="CanOpenFileAsync" use="required" type="xs:NCName"/>
<xs:attribute name="Created" use="required"/>
<xs:attribute name="DefaultViewUrl" use="required"/>
<xs:attribute name="Description" use="required"/>
<xs:attribute name="Direction" use="required" type="xs:NCName"/>
<xs:attribute name="DocTemplateUrl" use="required"/>
<xs:attribute name="EmailAlias" use="required"/>
<xs:attribute name="EnableAttachments" use="required" type="xs:NCName"/>
<xs:attribute name="EnableFolderCreation" use="required" type="xs:NCName"/>
<xs:attribute name="EnableMinorVersion" use="required" type="xs:NCName"/>
<xs:attribute name="EnableModeration" use="required" type="xs:NCName"/>
<xs:attribute name="EnablePeopleSelector" use="required" type="xs:NCName"/>
<xs:attribute name="EnableResourceSelector" use="required" type="xs:NCName"/>
<xs:attribute name="EnableVersioning" use="required" type="xs:NCName"/>
<xs:attribute name="EnforceDataValidation" use="required" type="xs:NCName"/>
<xs:attribute name="EventSinkAssembly" use="required"/>
<xs:attribute name="EventSinkClass" use="required"/>
<xs:attribute name="EventSinkData" use="required"/>
<xs:attribute name="ExcludeFromOfflineClient" use="required" type="xs:NCName"/>
<xs:attribute name="FeatureId" use="required"/>
<xs:attribute name="Flags" use="required" type="xs:integer"/>
<xs:attribute name="Followable" use="required" type="xs:NCName"/>
<xs:attribute name="HasExternalDataSource" use="required" type="xs:NCName"/>
<xs:attribute name="HasRelatedLists" use="required"/>
<xs:attribute name="HasUniqueScopes" use="required" type="xs:NCName"/>
<xs:attribute name="Hidden" use="required" type="xs:NCName"/>
<xs:attribute name="ID" use="required"/>
<xs:attribute name="ImageUrl" use="required"/>
<xs:attribute name="IrmEnabled" use="required" type="xs:NCName"/>
<xs:attribute name="IsApplicationList" use="required" type="xs:NCName"/>
<xs:attribute name="ItemCount" use="required" type="xs:integer"/>
<xs:attribute name="LastDeleted" use="required"/>
<xs:attribute name="MajorVersionLimit" use="required" type="xs:integer"/>
<xs:attribute name="MajorWithMinorVersionsLimit" use="required" type="xs:integer"/>
<xs:attribute name="MaxItemsPerThrottledOperation" use="required" type="xs:integer"/>
<xs:attribute name="MobileDefaultViewUrl" use="required"/>
<xs:attribute name="Modified" use="required"/>
<xs:attribute name="MultipleDataList" use="required" type="xs:NCName"/>
<xs:attribute name="Name" use="required"/>
<xs:attribute name="NoThrottleListOperations" use="required" type="xs:NCName"/>
<xs:attribute name="Ordered" use="required" type="xs:NCName"/>
<xs:attribute name="PreserveEmptyValues" use="required" type="xs:NCName"/>
<xs:attribute name="ReadSecurity" use="required" type="xs:integer"/>
<xs:attribute name="RequireCheckout" use="required" type="xs:NCName"/>
<xs:attribute name="RootFolder" use="required"/>
<xs:attribute name="ScopeId" use="required"/>
<xs:attribute name="SendToLocation" use="required"/>
<xs:attribute name="ServerTemplate" use="required" type="xs:integer"/>
<xs:attribute name="ShowUser" use="required" type="xs:NCName"/>
<xs:attribute name="StrictTypeCoercion" use="required" type="xs:NCName"/>
<xs:attribute name="ThrottleListOperations" use="required" type="xs:NCName"/>
<xs:attribute name="ThumbnailSize" use="required"/>
<xs:attribute name="Title" use="required"/>
<xs:attribute name="Version" use="required" type="xs:integer"/>
<xs:attribute name="WebFullUrl" use="required"/>
<xs:attribute name="WebId" use="required"/>
<xs:attribute name="WebImageHeight" use="required"/>
<xs:attribute name="WebImageWidth" use="required"/>
<xs:attribute name="WorkFlowId" use="required"/>
<xs:attribute name="WriteSecurity" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/" xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/">
<xs:include schemaLocation="list.xsd" />
<xs:element name="Lists">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="soap:List"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>