|
|
@@ -84,6 +84,12 @@ namespace Mono.Xml.Schema
|
|
|
return Normalize (s);
|
|
|
}
|
|
|
|
|
|
+ internal override ValueType ParseValueType (string s,
|
|
|
+ XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringValueType (Normalize (s));
|
|
|
+ }
|
|
|
+
|
|
|
internal string [] ParseListValue (string s, XmlNameTable nameTable)
|
|
|
{
|
|
|
return this.Normalize (s, XsdWhitespaceFacet.Collapse).Split (whitespaceArray);
|
|
|
@@ -272,6 +278,10 @@ namespace Mono.Xml.Schema
|
|
|
return s;
|
|
|
}
|
|
|
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringValueType (ParseValue (s, nameTable, nsmgr) as string);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:NMTOKENS
|
|
|
@@ -293,6 +303,11 @@ namespace Mono.Xml.Schema
|
|
|
{
|
|
|
return ParseListValue (value, nt);
|
|
|
}
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringArrayValueType (ParseListValue (s, nameTable));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:Name
|
|
|
@@ -317,6 +332,11 @@ namespace Mono.Xml.Schema
|
|
|
throw new ArgumentException ("'" + s + "' is an invalid name.");
|
|
|
return s;
|
|
|
}
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringValueType (ParseValue (s, nameTable, nsmgr) as string);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:NCName
|
|
|
@@ -342,6 +362,10 @@ namespace Mono.Xml.Schema
|
|
|
return s;
|
|
|
}
|
|
|
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringValueType (ParseValue (s, nameTable, nsmgr) as string);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:ID
|
|
|
@@ -399,6 +423,11 @@ namespace Mono.Xml.Schema
|
|
|
{
|
|
|
return ParseListValue (value, nt);
|
|
|
}
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringArrayValueType (ParseListValue (s, nameTable));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:ENTITY
|
|
|
@@ -439,6 +468,11 @@ namespace Mono.Xml.Schema
|
|
|
{
|
|
|
return ParseListValue (value, nt);
|
|
|
}
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringArrayValueType (ParseListValue (s, nameTable));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:NOTATION
|
|
|
@@ -518,9 +552,13 @@ namespace Mono.Xml.Schema
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
- return XmlConvert.ToDecimal (this.Normalize (s));
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
}
|
|
|
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return XmlConvert.ToDecimal (this.Normalize (s));
|
|
|
+ }
|
|
|
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is Decimal) && (y is Decimal)) {
|
|
|
@@ -581,6 +619,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
decimal d = XmlConvert.ToDecimal (Normalize (s));
|
|
|
if (Decimal.Floor (d) != d)
|
|
|
@@ -601,6 +644,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToInt64 (Normalize (s));
|
|
|
}
|
|
|
@@ -630,9 +678,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToInt32 (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is int) && (y is int)) {
|
|
|
if ((int)x==(int)y) {
|
|
|
@@ -659,9 +713,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToInt16 (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is short) && (y is short)) {
|
|
|
if ((short)x==(short)y) {
|
|
|
@@ -687,9 +747,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToSByte (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is sbyte) && (y is sbyte)) {
|
|
|
if ((sbyte)x==(sbyte)y) {
|
|
|
@@ -717,6 +783,11 @@ namespace Mono.Xml.Schema
|
|
|
[CLSCompliant (false)]
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToDecimal (Normalize (s));
|
|
|
}
|
|
|
@@ -732,9 +803,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToUInt64 (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is ulong) && (y is ulong)) {
|
|
|
if ((ulong)x==(ulong)y) {
|
|
|
@@ -761,9 +838,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToUInt32 (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is uint) && (y is uint)) {
|
|
|
if ((uint)x==(uint)y) {
|
|
|
@@ -791,9 +874,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToUInt16 (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is ushort) && (y is ushort)) {
|
|
|
if ((ushort)x==(ushort)y) {
|
|
|
@@ -820,9 +909,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToByte(Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is byte) && (y is byte)) {
|
|
|
if ((byte)x==(byte)y) {
|
|
|
@@ -852,6 +947,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToDecimal (Normalize (s));
|
|
|
}
|
|
|
@@ -866,6 +966,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToDecimal (Normalize (s));
|
|
|
}
|
|
|
@@ -881,6 +986,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToDecimal (Normalize (s));
|
|
|
}
|
|
|
@@ -918,9 +1028,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToSingle (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is float) && (y is float)) {
|
|
|
if ((float)x==(float)y) {
|
|
|
@@ -970,9 +1086,15 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToDouble (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
internal override XsdOrdering Compare(object x, object y) {
|
|
|
if ((x is double) && (y is double)) {
|
|
|
if ((double)x==(double)y) {
|
|
|
@@ -1006,6 +1128,11 @@ namespace Mono.Xml.Schema
|
|
|
{
|
|
|
return Convert.FromBase64String (Normalize (s));
|
|
|
}
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringValueType (ParseValue (s, nameTable, nsmgr) as string);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:hexBinary
|
|
|
@@ -1033,7 +1160,11 @@ namespace Mono.Xml.Schema
|
|
|
{
|
|
|
return XmlConvert.FromBinHexString (Normalize (s));
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new StringValueType (ParseValue (s, nameTable, nsmgr) as string);
|
|
|
+ }
|
|
|
|
|
|
// Fundamental Facets ... no need to override
|
|
|
}
|
|
|
@@ -1069,7 +1200,11 @@ namespace Mono.Xml.Schema
|
|
|
return new XmlQualifiedName (localName, nsmgr.LookupNamespace (
|
|
|
colonAt < 0 ? "" : s.Substring (0, colonAt - 1)));
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new QNameValueType (ParseValue (s, nameTable, nsmgr) as XmlQualifiedName);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// xs:boolean
|
|
|
@@ -1094,6 +1229,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToBoolean (this.Normalize (s));
|
|
|
}
|
|
|
@@ -1130,7 +1270,12 @@ namespace Mono.Xml.Schema
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
- return new Uri (Normalize (s));
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return new UriValueType (Normalize (s));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1156,6 +1301,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToTimeSpan (Normalize (s));
|
|
|
}
|
|
|
@@ -1221,6 +1371,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return XmlConvert.ToDateTime (Normalize (s));
|
|
|
}
|
|
|
@@ -1280,6 +1435,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize (s), "yyyy-MM-dd", null);
|
|
|
}
|
|
|
@@ -1356,6 +1516,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize (s), timeFormats, null, DateTimeStyles.None);
|
|
|
}
|
|
|
@@ -1401,6 +1566,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize (s), "yyyy-MM", null);
|
|
|
}
|
|
|
@@ -1441,6 +1611,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize (s), "--MM-dd", null);
|
|
|
}
|
|
|
@@ -1483,6 +1658,11 @@ namespace Mono.Xml.Schema
|
|
|
// but CLR DateTime does not allow such expression.
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize(s), "yyyy", null);
|
|
|
}
|
|
|
@@ -1523,6 +1703,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize(s), "--MM--", null);
|
|
|
}
|
|
|
@@ -1563,6 +1748,11 @@ namespace Mono.Xml.Schema
|
|
|
|
|
|
public override object ParseValue (string s,
|
|
|
XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
+ {
|
|
|
+ return ParseValueType (s, nameTable, nsmgr);
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override ValueType ParseValueType (string s, XmlNameTable nameTable, XmlNamespaceManager nsmgr)
|
|
|
{
|
|
|
return DateTime.ParseExact (Normalize(s), "---dd", null);
|
|
|
}
|