nokogiri 1.5.11-java → 1.6.0-java

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

data/build_all CHANGED
@@ -8,7 +8,7 @@
8
8
  # here's what I recommend for building all the gems:
9
9
  #
10
10
  # 1. set up a vagrant VM guest running ubuntu lucid 32-bit.
11
- # 2. install rvm, and install 1.8.7, 1.9.3 and jruby.
11
+ # 2. install rvm, and install 1.9.3, 2.0.0 and jruby.
12
12
  # 3. `sudo apt-get install mingw32`
13
13
  #
14
14
  # as you build, you may run into these problems:
@@ -0,0 +1,4 @@
1
+ libxml2: "2.8.0"
2
+ libxslt: "1.1.26"
3
+ zlib: "1.2.7"
4
+ libiconv: "1.13.1"
@@ -120,4 +120,4 @@ public class NokogiriEntityResolver implements EntityResolver2 {
120
120
  return s;
121
121
  }
122
122
 
123
- }
123
+ }
@@ -61,16 +61,11 @@ public class NokogiriNonStrictErrorHandler extends NokogiriErrorHandler{
61
61
  // found in the prolog, instead it will keep calling this method and we'll
62
62
  // keep inserting the error in the document errors array until we run
63
63
  // out of memory
64
- errors.add(ex);
65
64
  String message = ex.getMessage();
66
-
67
- // The problem with Xerces is that some errors will cause the
68
- // parser not to advance the reader and it will keep reporting
69
- // the same error over and over, which will cause the parser
70
- // to enter an infinite loop unless we throw the exception.
71
- if (message != null && isFatal(message)) {
65
+ if (message != null && message.toLowerCase().contains("in prolog")) {
72
66
  throw ex;
73
67
  }
68
+ errors.add(ex);
74
69
  }
75
70
 
76
71
  public void error(String domain, String key, XMLParseException e) {
@@ -85,14 +80,4 @@ public class NokogiriNonStrictErrorHandler extends NokogiriErrorHandler{
85
80
  errors.add(e);
86
81
  }
87
82
 
88
- /*
89
- * Determine whether this is a fatal error that should cause
90
- * the parsing to stop, or an error that can be ignored.
91
- */
92
- private static boolean isFatal(String msg) {
93
- return
94
- msg.toLowerCase().contains("in prolog") ||
95
- msg.toLowerCase().contains("limit") ||
96
- msg.toLowerCase().contains("preceding the root element must be well-formed");
97
- }
98
83
  }
@@ -18,7 +18,9 @@ end
18
18
  $CFLAGS << " #{ENV["CFLAGS"]}"
19
19
  $LIBS << " #{ENV["LIBS"]}"
20
20
 
21
- if RbConfig::CONFIG['target_os'] == 'mingw32' || RbConfig::CONFIG['target_os'] =~ /mswin/
21
+ windows_p = RbConfig::CONFIG['target_os'] == 'mingw32' || RbConfig::CONFIG['target_os'] =~ /mswin/
22
+
23
+ if windows_p
22
24
  $CFLAGS << " -DXP_WIN -DXP_WIN32 -DUSE_INCLUDED_VASPRINTF"
23
25
  elsif RbConfig::CONFIG['target_os'] =~ /solaris/
24
26
  $CFLAGS << " -DUSE_INCLUDED_VASPRINTF"
@@ -36,59 +38,107 @@ if RbConfig::MAKEFILE_CONFIG['CC'] =~ /gcc/
36
38
  $CFLAGS << " -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline"
37
39
  end
38
40
 
39
- if RbConfig::CONFIG['target_os'] =~ /mswin/
40
- lib_prefix = 'lib'
41
-
42
- # There's no default include/lib dir on Windows. Let's just add the Ruby ones
43
- # and resort on the search path specified by INCLUDE and LIB environment
44
- # variables
41
+ if windows_p
42
+ # I'm cross compiling!
45
43
  HEADER_DIRS = [INCLUDEDIR]
46
44
  LIB_DIRS = [LIBDIR]
47
45
  XML2_HEADER_DIRS = [File.join(INCLUDEDIR, "libxml2"), INCLUDEDIR]
48
46
 
49
47
  else
50
- lib_prefix = ''
51
-
52
- HEADER_DIRS = [
53
- # First search /opt/local for macports
54
- '/opt/local/include',
55
-
56
- # Then search /usr/local for people that installed from source
57
- '/usr/local/include',
58
-
59
- # Check the ruby install locations
60
- INCLUDEDIR,
61
-
62
- # Finally fall back to /usr
63
- '/usr/include',
64
- '/usr/include/libxml2',
65
- ]
66
-
67
- LIB_DIRS = [
68
- # First search /opt/local for macports
69
- '/opt/local/lib',
70
-
71
- # Then search /usr/local for people that installed from source
72
- '/usr/local/lib',
73
-
74
- # Check the ruby install locations
75
- LIBDIR,
76
-
77
- # Finally fall back to /usr
78
- '/usr/lib',
79
- ]
80
-
81
- XML2_HEADER_DIRS = [
82
- '/opt/local/include/libxml2',
83
- '/usr/local/include/libxml2',
84
- File.join(INCLUDEDIR, "libxml2")
85
- ] + HEADER_DIRS
86
-
87
- # If the user has homebrew installed, use the libxml2 inside homebrew
88
- brew_prefix = `brew --prefix libxml2 2> /dev/null`.chomp
89
- unless brew_prefix.empty?
90
- LIB_DIRS.unshift File.join(brew_prefix, 'lib')
91
- XML2_HEADER_DIRS.unshift File.join(brew_prefix, 'include/libxml2')
48
+ if ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES']
49
+ HEADER_DIRS = [
50
+ # First search /opt/local for macports
51
+ '/opt/local/include',
52
+
53
+ # Then search /usr/local for people that installed from source
54
+ '/usr/local/include',
55
+
56
+ # Check the ruby install locations
57
+ INCLUDEDIR,
58
+
59
+ # Finally fall back to /usr
60
+ '/usr/include',
61
+ '/usr/include/libxml2',
62
+ ]
63
+
64
+ LIB_DIRS = [
65
+ # First search /opt/local for macports
66
+ '/opt/local/lib',
67
+
68
+ # Then search /usr/local for people that installed from source
69
+ '/usr/local/lib',
70
+
71
+ # Check the ruby install locations
72
+ LIBDIR,
73
+
74
+ # Finally fall back to /usr
75
+ '/usr/lib',
76
+ ]
77
+
78
+ XML2_HEADER_DIRS = [
79
+ '/opt/local/include/libxml2',
80
+ '/usr/local/include/libxml2',
81
+ File.join(INCLUDEDIR, "libxml2")
82
+ ] + HEADER_DIRS
83
+
84
+ # If the user has homebrew installed, use the libxml2 inside homebrew
85
+ brew_prefix = `brew --prefix libxml2 2> /dev/null`.chomp
86
+ unless brew_prefix.empty?
87
+ LIB_DIRS.unshift File.join(brew_prefix, 'lib')
88
+ XML2_HEADER_DIRS.unshift File.join(brew_prefix, 'include/libxml2')
89
+ end
90
+
91
+ else
92
+ require 'mini_portile'
93
+ require 'yaml'
94
+
95
+ common_recipe = lambda do |recipe|
96
+ recipe.target = File.join(ROOT, "ports")
97
+ recipe.files = ["ftp://ftp.xmlsoft.org/libxml2/#{recipe.name}-#{recipe.version}.tar.gz"]
98
+
99
+ checkpoint = "#{recipe.target}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
100
+ unless File.exist?(checkpoint)
101
+ recipe.cook
102
+ FileUtils.touch checkpoint
103
+ end
104
+ recipe.activate
105
+ end
106
+
107
+ dependencies = YAML.load_file(File.join(ROOT, "dependencies.yml"))
108
+
109
+ libxml2_recipe = MiniPortile.new("libxml2", dependencies["libxml2"]).tap do |recipe|
110
+ recipe.configure_options = [
111
+ "--enable-shared",
112
+ "--disable-static",
113
+ "--without-python",
114
+ "--without-readline",
115
+ "--with-c14n",
116
+ "--with-debug",
117
+ "--with-threads"
118
+ ]
119
+ common_recipe.call recipe
120
+ end
121
+
122
+ libxslt_recipe = MiniPortile.new("libxslt", dependencies["libxslt"]).tap do |recipe|
123
+ recipe.configure_options = [
124
+ "--enable-shared",
125
+ "--disable-static",
126
+ "--without-python",
127
+ "--without-crypto",
128
+ "--with-debug",
129
+ "--with-libxml-prefix=#{libxml2_recipe.path}"
130
+ ]
131
+ common_recipe.call recipe
132
+ end
133
+
134
+ $LDFLAGS << " -Wl,-rpath,#{libxml2_recipe.path}/lib"
135
+ $LDFLAGS << " -Wl,-rpath,#{libxslt_recipe.path}/lib"
136
+
137
+ $CFLAGS << " -DNOKOGIRI_USE_PACKAGED_LIBRARIES -DNOKOGIRI_LIBXML2_PATH='\"#{libxml2_recipe.path}\"' -DNOKOGIRI_LIBXSLT_PATH='\"#{libxslt_recipe.path}\"'"
138
+
139
+ HEADER_DIRS = [libxml2_recipe, libxslt_recipe].map { |f| File.join(f.path, "include") }
140
+ LIB_DIRS = [libxml2_recipe, libxslt_recipe].map { |f| File.join(f.path, "lib") }
141
+ XML2_HEADER_DIRS = HEADER_DIRS + [File.join(libxml2_recipe.path, "include", "libxml2")]
92
142
  end
93
143
  end
94
144
 
@@ -117,9 +167,9 @@ asplode "libxml2" unless find_header('libxml/parser.h')
117
167
  asplode "libxslt" unless find_header('libxslt/xslt.h')
118
168
  asplode "libexslt" unless find_header('libexslt/exslt.h')
119
169
  asplode "libiconv" unless have_iconv?
120
- asplode "libxml2" unless find_library("#{lib_prefix}xml2", 'xmlParseDoc')
121
- asplode "libxslt" unless find_library("#{lib_prefix}xslt", 'xsltParseStylesheetDoc')
122
- asplode "libexslt" unless find_library("#{lib_prefix}exslt", 'exsltFuncRegister')
170
+ asplode "libxml2" unless find_library("xml2", 'xmlParseDoc')
171
+ asplode "libxslt" unless find_library("xslt", 'xsltParseStylesheetDoc')
172
+ asplode "libexslt" unless find_library("exslt", 'exsltFuncRegister')
123
173
 
124
174
  unless have_func('xmlHasFeature')
125
175
  abort "-----\nThe function 'xmlHasFeature' is missing from your installation of libxml2. Likely this means that your installed version of libxml2 is old enough that nokogiri will not work well. To get around this problem, please upgrade your installation of libxml2.
@@ -141,4 +191,5 @@ if ENV['CPUPROFILE']
141
191
  end
142
192
 
143
193
  create_makefile('nokogiri/nokogiri')
194
+
144
195
  # :startdoc:
@@ -90,6 +90,16 @@ void Init_nokogiri()
90
90
  NOKOGIRI_STR_NEW2(xmlParserVersion)
91
91
  );
92
92
 
93
+ #ifdef NOKOGIRI_USE_PACKAGED_LIBRARIES
94
+ rb_const_set(mNokogiri, rb_intern("NOKOGIRI_USE_PACKAGED_LIBRARIES"), Qtrue);
95
+ rb_const_set(mNokogiri, rb_intern("NOKOGIRI_LIBXML2_PATH"), NOKOGIRI_STR_NEW2(NOKOGIRI_LIBXML2_PATH));
96
+ rb_const_set(mNokogiri, rb_intern("NOKOGIRI_LIBXSLT_PATH"), NOKOGIRI_STR_NEW2(NOKOGIRI_LIBXSLT_PATH));
97
+ #else
98
+ rb_const_set(mNokogiri, rb_intern("NOKOGIRI_USE_PACKAGED_LIBRARIES"), Qfalse);
99
+ rb_const_set(mNokogiri, rb_intern("NOKOGIRI_LIBXML2_PATH"), Qnil);
100
+ rb_const_set(mNokogiri, rb_intern("NOKOGIRI_LIBXSLT_PATH"), Qnil);
101
+ #endif
102
+
93
103
  #ifdef LIBXML_ICONV_ENABLED
94
104
  rb_const_set(mNokogiri, rb_intern("LIBXML_ICONV_ENABLED"), Qtrue);
95
105
  #else
Binary file
@@ -1,6 +1,6 @@
1
1
  module Nokogiri
2
2
  # The version of Nokogiri you are using
3
- VERSION = '1.5.11'
3
+ VERSION = '1.6.0'
4
4
 
5
5
  class VersionInfo # :nodoc:
6
6
  def jruby?
@@ -12,7 +12,7 @@ module Nokogiri
12
12
  end
13
13
 
14
14
  def loaded_parser_version
15
- LIBXML_PARSER_VERSION.scan(/^(\d+)(\d\d)(\d\d)(?!\d)/).first.collect{ |j|
15
+ LIBXML_PARSER_VERSION.scan(/^(.*)(..)(..)$/).first.collect{ |j|
16
16
  j.to_i
17
17
  }.join(".")
18
18
  end
@@ -25,6 +25,14 @@ module Nokogiri
25
25
  defined?(LIBXML_VERSION)
26
26
  end
27
27
 
28
+ def libxml2_using_system?
29
+ ! libxml2_using_packaged?
30
+ end
31
+
32
+ def libxml2_using_packaged?
33
+ NOKOGIRI_USE_PACKAGED_LIBRARIES
34
+ end
35
+
28
36
  def warnings
29
37
  return [] unless libxml2?
30
38
 
@@ -49,6 +57,13 @@ module Nokogiri
49
57
  if libxml2?
50
58
  hash_info['libxml'] = {}
51
59
  hash_info['libxml']['binding'] = 'extension'
60
+ if libxml2_using_packaged?
61
+ hash_info['libxml']['source'] = "packaged"
62
+ hash_info['libxml']['libxml2_path'] = NOKOGIRI_LIBXML2_PATH
63
+ hash_info['libxml']['libxslt_path'] = NOKOGIRI_LIBXSLT_PATH
64
+ else
65
+ hash_info['libxml']['source'] = "system"
66
+ end
52
67
  hash_info['libxml']['compiled'] = compiled_parser_version
53
68
  hash_info['libxml']['loaded'] = loaded_parser_version
54
69
  hash_info['warnings'] = warnings
@@ -3,11 +3,11 @@ require 'rake/extensioncompiler'
3
3
  HOST = Rake::ExtensionCompiler.mingw_host
4
4
 
5
5
  require 'mini_portile'
6
+ dependencies = YAML.load_file("dependencies.yml")
6
7
  $recipes = {}
7
- $recipes["zlib"] = MiniPortile.new "zlib", "1.2.7"
8
- $recipes["libiconv"] = MiniPortile.new "libiconv", "1.13.1"
9
- $recipes["libxml2"] = MiniPortile.new "libxml2", "2.7.7"
10
- $recipes["libxslt"] = MiniPortile.new "libxslt", "1.1.26"
8
+ %w[zlib libiconv libxml2 libxslt].each do |lib|
9
+ $recipes[lib] = MiniPortile.new lib, dependencies[lib]
10
+ end
11
11
  $recipes.each { |_, recipe| recipe.host = HOST }
12
12
 
13
13
  file "lib/nokogiri/nokogiri.rb" do
@@ -90,15 +90,6 @@ namespace :cross do
90
90
  "--without-readline",
91
91
  "CFLAGS='-DIN_LIBXML'"
92
92
  ]
93
- class << recipe
94
- def download
95
- Dir.chdir archives_path do
96
- @files.each do |url|
97
- sh "wget #{url} || curl -O #{url}"
98
- end
99
- end
100
- end
101
- end
102
93
 
103
94
  checkpoint = "#{CROSS_DIR}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
104
95
  unless File.exist?(checkpoint)
@@ -120,15 +111,6 @@ namespace :cross do
120
111
  "--without-crypto",
121
112
  "CFLAGS='-DIN_LIBXML'"
122
113
  ]
123
- class << recipe
124
- def download
125
- Dir.chdir archives_path do
126
- @files.each do |url|
127
- sh "wget #{url} || curl -O #{url}"
128
- end
129
- end
130
- end
131
- end
132
114
 
133
115
  checkpoint = "#{CROSS_DIR}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
134
116
  unless File.exist?(checkpoint)
@@ -140,7 +122,7 @@ namespace :cross do
140
122
 
141
123
  task :file_list do
142
124
  HOE.spec.files += Dir["lib/nokogiri/nokogiri.rb"]
143
- HOE.spec.files += Dir["lib/nokogiri/{1.8,1.9,2.0}/nokogiri.so"]
125
+ HOE.spec.files += Dir["lib/nokogiri/{1.9,2.0}/nokogiri.so"]
144
126
  end
145
127
  end
146
128
 
File without changes
@@ -0,0 +1,283 @@
1
+ <?xml version="1.0" encoding="US-ASCII"?>
2
+ <schema
3
+ targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion"
4
+ xmlns="http://www.w3.org/2001/XMLSchema"
5
+ xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
6
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
7
+ xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
8
+ elementFormDefault="unqualified"
9
+ attributeFormDefault="unqualified"
10
+ blockDefault="substitution"
11
+ version="2.0">
12
+ <import namespace="http://www.w3.org/2000/09/xmldsig#"
13
+ schemaLocation="xmldsig_schema.xsd"/>
14
+ <import namespace="http://www.w3.org/2001/04/xmlenc#"
15
+ schemaLocation="xenc_schema.xsd"/>
16
+ <annotation>
17
+ <documentation>
18
+ Document identifier: saml-schema-assertion-2.0
19
+ Location: http://docs.oasis-open.org/security/saml/v2.0/
20
+ Revision history:
21
+ V1.0 (November, 2002):
22
+ Initial Standard Schema.
23
+ V1.1 (September, 2003):
24
+ Updates within the same V1.0 namespace.
25
+ V2.0 (March, 2005):
26
+ New assertion schema for SAML V2.0 namespace.
27
+ </documentation>
28
+ </annotation>
29
+ <attributeGroup name="IDNameQualifiers">
30
+ <attribute name="NameQualifier" type="string" use="optional"/>
31
+ <attribute name="SPNameQualifier" type="string" use="optional"/>
32
+ </attributeGroup>
33
+ <element name="BaseID" type="saml:BaseIDAbstractType"/>
34
+ <complexType name="BaseIDAbstractType" abstract="true">
35
+ <attributeGroup ref="saml:IDNameQualifiers"/>
36
+ </complexType>
37
+ <element name="NameID" type="saml:NameIDType"/>
38
+ <complexType name="NameIDType">
39
+ <simpleContent>
40
+ <extension base="string">
41
+ <attributeGroup ref="saml:IDNameQualifiers"/>
42
+ <attribute name="Format" type="anyURI" use="optional"/>
43
+ <attribute name="SPProvidedID" type="string" use="optional"/>
44
+ </extension>
45
+ </simpleContent>
46
+ </complexType>
47
+ <complexType name="EncryptedElementType">
48
+ <sequence>
49
+ <element ref="xenc:EncryptedData"/>
50
+ <element ref="xenc:EncryptedKey" minOccurs="0" maxOccurs="unbounded"/>
51
+ </sequence>
52
+ </complexType>
53
+ <element name="EncryptedID" type="saml:EncryptedElementType"/>
54
+ <element name="Issuer" type="saml:NameIDType"/>
55
+ <element name="AssertionIDRef" type="NCName"/>
56
+ <element name="AssertionURIRef" type="anyURI"/>
57
+ <element name="Assertion" type="saml:AssertionType"/>
58
+ <complexType name="AssertionType">
59
+ <sequence>
60
+ <element ref="saml:Issuer"/>
61
+ <element ref="ds:Signature" minOccurs="0"/>
62
+ <element ref="saml:Subject" minOccurs="0"/>
63
+ <element ref="saml:Conditions" minOccurs="0"/>
64
+ <element ref="saml:Advice" minOccurs="0"/>
65
+ <choice minOccurs="0" maxOccurs="unbounded">
66
+ <element ref="saml:Statement"/>
67
+ <element ref="saml:AuthnStatement"/>
68
+ <element ref="saml:AuthzDecisionStatement"/>
69
+ <element ref="saml:AttributeStatement"/>
70
+ </choice>
71
+ </sequence>
72
+ <attribute name="Version" type="string" use="required"/>
73
+ <attribute name="ID" type="ID" use="required"/>
74
+ <attribute name="IssueInstant" type="dateTime" use="required"/>
75
+ </complexType>
76
+ <element name="Subject" type="saml:SubjectType"/>
77
+ <complexType name="SubjectType">
78
+ <choice>
79
+ <sequence>
80
+ <choice>
81
+ <element ref="saml:BaseID"/>
82
+ <element ref="saml:NameID"/>
83
+ <element ref="saml:EncryptedID"/>
84
+ </choice>
85
+ <element ref="saml:SubjectConfirmation" minOccurs="0" maxOccurs="unbounded"/>
86
+ </sequence>
87
+ <element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/>
88
+ </choice>
89
+ </complexType>
90
+ <element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/>
91
+ <complexType name="SubjectConfirmationType">
92
+ <sequence>
93
+ <choice minOccurs="0">
94
+ <element ref="saml:BaseID"/>
95
+ <element ref="saml:NameID"/>
96
+ <element ref="saml:EncryptedID"/>
97
+ </choice>
98
+ <element ref="saml:SubjectConfirmationData" minOccurs="0"/>
99
+ </sequence>
100
+ <attribute name="Method" type="anyURI" use="required"/>
101
+ </complexType>
102
+ <element name="SubjectConfirmationData" type="saml:SubjectConfirmationDataType"/>
103
+ <complexType name="SubjectConfirmationDataType" mixed="true">
104
+ <complexContent>
105
+ <restriction base="anyType">
106
+ <sequence>
107
+ <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
108
+ </sequence>
109
+ <attribute name="NotBefore" type="dateTime" use="optional"/>
110
+ <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>
111
+ <attribute name="Recipient" type="anyURI" use="optional"/>
112
+ <attribute name="InResponseTo" type="NCName" use="optional"/>
113
+ <attribute name="Address" type="string" use="optional"/>
114
+ <anyAttribute namespace="##other" processContents="lax"/>
115
+ </restriction>
116
+ </complexContent>
117
+ </complexType>
118
+ <complexType name="KeyInfoConfirmationDataType" mixed="false">
119
+ <complexContent>
120
+ <restriction base="saml:SubjectConfirmationDataType">
121
+ <sequence>
122
+ <element ref="ds:KeyInfo" maxOccurs="unbounded"/>
123
+ </sequence>
124
+ </restriction>
125
+ </complexContent>
126
+ </complexType>
127
+ <element name="Conditions" type="saml:ConditionsType"/>
128
+ <complexType name="ConditionsType">
129
+ <choice minOccurs="0" maxOccurs="unbounded">
130
+ <element ref="saml:Condition"/>
131
+ <element ref="saml:AudienceRestriction"/>
132
+ <element ref="saml:OneTimeUse"/>
133
+ <element ref="saml:ProxyRestriction"/>
134
+ </choice>
135
+ <attribute name="NotBefore" type="dateTime" use="optional"/>
136
+ <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>
137
+ </complexType>
138
+ <element name="Condition" type="saml:ConditionAbstractType"/>
139
+ <complexType name="ConditionAbstractType" abstract="true"/>
140
+ <element name="AudienceRestriction" type="saml:AudienceRestrictionType"/>
141
+ <complexType name="AudienceRestrictionType">
142
+ <complexContent>
143
+ <extension base="saml:ConditionAbstractType">
144
+ <sequence>
145
+ <element ref="saml:Audience" maxOccurs="unbounded"/>
146
+ </sequence>
147
+ </extension>
148
+ </complexContent>
149
+ </complexType>
150
+ <element name="Audience" type="anyURI"/>
151
+ <element name="OneTimeUse" type="saml:OneTimeUseType" />
152
+ <complexType name="OneTimeUseType">
153
+ <complexContent>
154
+ <extension base="saml:ConditionAbstractType"/>
155
+ </complexContent>
156
+ </complexType>
157
+ <element name="ProxyRestriction" type="saml:ProxyRestrictionType"/>
158
+ <complexType name="ProxyRestrictionType">
159
+ <complexContent>
160
+ <extension base="saml:ConditionAbstractType">
161
+ <sequence>
162
+ <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>
163
+ </sequence>
164
+ <attribute name="Count" type="nonNegativeInteger" use="optional"/>
165
+ </extension>
166
+ </complexContent>
167
+ </complexType>
168
+ <element name="Advice" type="saml:AdviceType"/>
169
+ <complexType name="AdviceType">
170
+ <choice minOccurs="0" maxOccurs="unbounded">
171
+ <element ref="saml:AssertionIDRef"/>
172
+ <element ref="saml:AssertionURIRef"/>
173
+ <element ref="saml:Assertion"/>
174
+ <element ref="saml:EncryptedAssertion"/>
175
+ <any namespace="##other" processContents="lax"/>
176
+ </choice>
177
+ </complexType>
178
+ <element name="EncryptedAssertion" type="saml:EncryptedElementType"/>
179
+ <element name="Statement" type="saml:StatementAbstractType"/>
180
+ <complexType name="StatementAbstractType" abstract="true"/>
181
+ <element name="AuthnStatement" type="saml:AuthnStatementType"/>
182
+ <complexType name="AuthnStatementType">
183
+ <complexContent>
184
+ <extension base="saml:StatementAbstractType">
185
+ <sequence>
186
+ <element ref="saml:SubjectLocality" minOccurs="0"/>
187
+ <element ref="saml:AuthnContext"/>
188
+ </sequence>
189
+ <attribute name="AuthnInstant" type="dateTime" use="required"/>
190
+ <attribute name="SessionIndex" type="string" use="optional"/>
191
+ <attribute name="SessionNotOnOrAfter" type="dateTime" use="optional"/>
192
+ </extension>
193
+ </complexContent>
194
+ </complexType>
195
+ <element name="SubjectLocality" type="saml:SubjectLocalityType"/>
196
+ <complexType name="SubjectLocalityType">
197
+ <attribute name="Address" type="string" use="optional"/>
198
+ <attribute name="DNSName" type="string" use="optional"/>
199
+ </complexType>
200
+ <element name="AuthnContext" type="saml:AuthnContextType"/>
201
+ <complexType name="AuthnContextType">
202
+ <sequence>
203
+ <choice>
204
+ <sequence>
205
+ <element ref="saml:AuthnContextClassRef"/>
206
+ <choice minOccurs="0">
207
+ <element ref="saml:AuthnContextDecl"/>
208
+ <element ref="saml:AuthnContextDeclRef"/>
209
+ </choice>
210
+ </sequence>
211
+ <choice>
212
+ <element ref="saml:AuthnContextDecl"/>
213
+ <element ref="saml:AuthnContextDeclRef"/>
214
+ </choice>
215
+ </choice>
216
+ <element ref="saml:AuthenticatingAuthority" minOccurs="0" maxOccurs="unbounded"/>
217
+ </sequence>
218
+ </complexType>
219
+ <element name="AuthnContextClassRef" type="anyURI"/>
220
+ <element name="AuthnContextDeclRef" type="anyURI"/>
221
+ <element name="AuthnContextDecl" type="anyType"/>
222
+ <element name="AuthenticatingAuthority" type="anyURI"/>
223
+ <element name="AuthzDecisionStatement" type="saml:AuthzDecisionStatementType"/>
224
+ <complexType name="AuthzDecisionStatementType">
225
+ <complexContent>
226
+ <extension base="saml:StatementAbstractType">
227
+ <sequence>
228
+ <element ref="saml:Action" maxOccurs="unbounded"/>
229
+ <element ref="saml:Evidence" minOccurs="0"/>
230
+ </sequence>
231
+ <attribute name="Resource" type="anyURI" use="required"/>
232
+ <attribute name="Decision" type="saml:DecisionType" use="required"/>
233
+ </extension>
234
+ </complexContent>
235
+ </complexType>
236
+ <simpleType name="DecisionType">
237
+ <restriction base="string">
238
+ <enumeration value="Permit"/>
239
+ <enumeration value="Deny"/>
240
+ <enumeration value="Indeterminate"/>
241
+ </restriction>
242
+ </simpleType>
243
+ <element name="Action" type="saml:ActionType"/>
244
+ <complexType name="ActionType">
245
+ <simpleContent>
246
+ <extension base="string">
247
+ <attribute name="Namespace" type="anyURI" use="required"/>
248
+ </extension>
249
+ </simpleContent>
250
+ </complexType>
251
+ <element name="Evidence" type="saml:EvidenceType"/>
252
+ <complexType name="EvidenceType">
253
+ <choice maxOccurs="unbounded">
254
+ <element ref="saml:AssertionIDRef"/>
255
+ <element ref="saml:AssertionURIRef"/>
256
+ <element ref="saml:Assertion"/>
257
+ <element ref="saml:EncryptedAssertion"/>
258
+ </choice>
259
+ </complexType>
260
+ <element name="AttributeStatement" type="saml:AttributeStatementType"/>
261
+ <complexType name="AttributeStatementType">
262
+ <complexContent>
263
+ <extension base="saml:StatementAbstractType">
264
+ <choice maxOccurs="unbounded">
265
+ <element ref="saml:Attribute"/>
266
+ <element ref="saml:EncryptedAttribute"/>
267
+ </choice>
268
+ </extension>
269
+ </complexContent>
270
+ </complexType>
271
+ <element name="Attribute" type="saml:AttributeType"/>
272
+ <complexType name="AttributeType">
273
+ <sequence>
274
+ <element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/>
275
+ </sequence>
276
+ <attribute name="Name" type="string" use="required"/>
277
+ <attribute name="NameFormat" type="anyURI" use="optional"/>
278
+ <attribute name="FriendlyName" type="string" use="optional"/>
279
+ <anyAttribute namespace="##other" processContents="lax"/>
280
+ </complexType>
281
+ <element name="AttributeValue" type="anyType" nillable="true"/>
282
+ <element name="EncryptedAttribute" type="saml:EncryptedElementType"/>
283
+ </schema>