XQueryConvert.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044
  1. //
  2. // System.Xml.Query.XQueryConvert
  3. //
  4. // Author:
  5. // Atsushi Enomoto <[email protected]>
  6. //
  7. // Copyright (C) 2004 Novell Inc.
  8. //
  9. //
  10. // Permission is hereby granted, free of charge, to any person obtaining
  11. // a copy of this software and associated documentation files (the
  12. // "Software"), to deal in the Software without restriction, including
  13. // without limitation the rights to use, copy, modify, merge, publish,
  14. // distribute, sublicense, and/or sell copies of the Software, and to
  15. // permit persons to whom the Software is furnished to do so, subject to
  16. // the following conditions:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  21. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  25. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  26. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  27. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28. //
  29. #if NET_2_0
  30. using System;
  31. using System.Globalization;
  32. using System.IO;
  33. using System.Text;
  34. using System.Xml;
  35. using System.Xml.Schema;
  36. using System.Xml.XPath;
  37. namespace System.Xml
  38. {
  39. public class XQueryConvert
  40. {
  41. private XQueryConvert ()
  42. {
  43. }
  44. [MonoTODO]
  45. public static bool ShouldCheckValueFacets (XmlSchemaType schemaTypeDest)
  46. {
  47. throw new NotImplementedException ();
  48. }
  49. public static XmlTypeCode GetFallbackType (XmlTypeCode type)
  50. {
  51. switch (type) {
  52. case XmlTypeCode.AnyAtomicType:
  53. return XmlTypeCode.Item;
  54. case XmlTypeCode.UntypedAtomic:
  55. return XmlTypeCode.String;
  56. case XmlTypeCode.Notation:
  57. return XmlTypeCode.QName;
  58. case XmlTypeCode.NormalizedString:
  59. case XmlTypeCode.Token:
  60. case XmlTypeCode.Language:
  61. case XmlTypeCode.NmToken:
  62. case XmlTypeCode.Name:
  63. case XmlTypeCode.NCName:
  64. case XmlTypeCode.Id:
  65. case XmlTypeCode.Idref:
  66. case XmlTypeCode.Entity:
  67. return XmlTypeCode.String;
  68. case XmlTypeCode.NonPositiveInteger:
  69. return XmlTypeCode.Decimal;
  70. case XmlTypeCode.NegativeInteger:
  71. return XmlTypeCode.NonPositiveInteger;
  72. case XmlTypeCode.Long:
  73. return XmlTypeCode.Integer;
  74. case XmlTypeCode.Short:
  75. return XmlTypeCode.Int;
  76. case XmlTypeCode.Byte:
  77. return XmlTypeCode.Int;
  78. case XmlTypeCode.NonNegativeInteger:
  79. return XmlTypeCode.Decimal;
  80. case XmlTypeCode.UnsignedLong:
  81. return XmlTypeCode.NonNegativeInteger;
  82. case XmlTypeCode.UnsignedInt:
  83. return XmlTypeCode.Integer;
  84. case XmlTypeCode.UnsignedShort:
  85. return XmlTypeCode.Int;
  86. case XmlTypeCode.UnsignedByte:
  87. return XmlTypeCode.UnsignedShort;
  88. case XmlTypeCode.PositiveInteger:
  89. return XmlTypeCode.NonNegativeInteger;
  90. default:
  91. return XmlTypeCode.None;
  92. }
  93. }
  94. [MonoTODO]
  95. // See XQuery & XPath 2.0 functions & operators section 17.
  96. public static bool CanConvert (XPathItem item, XmlSchemaType schemaTypeDest)
  97. {
  98. if (item == null)
  99. throw new ArgumentNullException ("item");
  100. if (schemaTypeDest == null)
  101. throw new ArgumentNullException ("schemaTypeDest");
  102. XmlTypeCode src = item.XmlType.TypeCode;
  103. XmlTypeCode dst = schemaTypeDest.TypeCode;
  104. // Notation cannot be converted from other than Notation
  105. if (src == XmlTypeCode.Notation && dst != XmlTypeCode.Notation)
  106. return false;
  107. // untypedAtomic and string are convertable unless source type is QName.
  108. switch (dst) {
  109. case XmlTypeCode.UntypedAtomic:
  110. case XmlTypeCode.String:
  111. return src != XmlTypeCode.QName;
  112. }
  113. switch (src) {
  114. case XmlTypeCode.None:
  115. case XmlTypeCode.Item:
  116. case XmlTypeCode.Node:
  117. case XmlTypeCode.Document:
  118. case XmlTypeCode.Element:
  119. case XmlTypeCode.Attribute:
  120. case XmlTypeCode.Namespace:
  121. case XmlTypeCode.ProcessingInstruction:
  122. case XmlTypeCode.Comment:
  123. case XmlTypeCode.Text:
  124. throw new NotImplementedException (); // FIXME: check what happens
  125. case XmlTypeCode.AnyAtomicType:
  126. throw new NotImplementedException (); // FIXME: check what happens
  127. case XmlTypeCode.UntypedAtomic:
  128. case XmlTypeCode.String:
  129. // 'M'
  130. throw new NotImplementedException (); // FIXME: check what happens
  131. case XmlTypeCode.Boolean:
  132. case XmlTypeCode.Decimal:
  133. switch (dst) {
  134. case XmlTypeCode.Float:
  135. case XmlTypeCode.Double:
  136. case XmlTypeCode.Decimal:
  137. case XmlTypeCode.Boolean:
  138. return true;
  139. }
  140. return false;
  141. case XmlTypeCode.Float:
  142. case XmlTypeCode.Double:
  143. if (dst == XmlTypeCode.Decimal)
  144. // 'M'
  145. throw new NotImplementedException (); // FIXME: check what happens
  146. goto case XmlTypeCode.Decimal;
  147. case XmlTypeCode.Duration:
  148. switch (dst) {
  149. case XmlTypeCode.Duration:
  150. case XmlTypeCode.YearMonthDuration:
  151. case XmlTypeCode.DayTimeDuration:
  152. return true;
  153. }
  154. return false;
  155. case XmlTypeCode.DateTime:
  156. switch (dst) {
  157. case XmlTypeCode.DateTime:
  158. case XmlTypeCode.Time:
  159. case XmlTypeCode.Date:
  160. case XmlTypeCode.GYearMonth:
  161. case XmlTypeCode.GYear:
  162. case XmlTypeCode.GMonthDay:
  163. case XmlTypeCode.GDay:
  164. case XmlTypeCode.GMonth:
  165. return true;
  166. }
  167. return false;
  168. case XmlTypeCode.Time:
  169. switch (dst) {
  170. case XmlTypeCode.Time:
  171. case XmlTypeCode.Date:
  172. return true;
  173. }
  174. return false;
  175. case XmlTypeCode.Date:
  176. if (dst == XmlTypeCode.Time)
  177. return false;
  178. goto case XmlTypeCode.DateTime;
  179. case XmlTypeCode.GYearMonth:
  180. case XmlTypeCode.GYear:
  181. case XmlTypeCode.GMonthDay:
  182. case XmlTypeCode.GDay:
  183. case XmlTypeCode.GMonth:
  184. return src == dst;
  185. case XmlTypeCode.HexBinary:
  186. case XmlTypeCode.Base64Binary:
  187. if (src == dst)
  188. return true;
  189. switch (dst) {
  190. case XmlTypeCode.HexBinary:
  191. case XmlTypeCode.Base64Binary:
  192. return true;
  193. }
  194. return false;
  195. case XmlTypeCode.AnyUri:
  196. case XmlTypeCode.QName:
  197. case XmlTypeCode.Notation:
  198. return src == dst;
  199. case XmlTypeCode.NormalizedString:
  200. case XmlTypeCode.Token:
  201. case XmlTypeCode.Language:
  202. case XmlTypeCode.NmToken:
  203. case XmlTypeCode.Name:
  204. case XmlTypeCode.NCName:
  205. case XmlTypeCode.Id:
  206. case XmlTypeCode.Idref:
  207. case XmlTypeCode.Entity:
  208. case XmlTypeCode.Integer:
  209. case XmlTypeCode.NonPositiveInteger:
  210. case XmlTypeCode.NegativeInteger:
  211. case XmlTypeCode.Long:
  212. case XmlTypeCode.Int:
  213. case XmlTypeCode.Short:
  214. case XmlTypeCode.Byte:
  215. case XmlTypeCode.NonNegativeInteger:
  216. case XmlTypeCode.UnsignedLong:
  217. case XmlTypeCode.UnsignedInt:
  218. case XmlTypeCode.UnsignedShort:
  219. case XmlTypeCode.UnsignedByte:
  220. case XmlTypeCode.PositiveInteger:
  221. throw new NotImplementedException ();
  222. // xdt:*
  223. case XmlTypeCode.YearMonthDuration:
  224. if (dst == XmlTypeCode.DayTimeDuration)
  225. return false;
  226. goto case XmlTypeCode.Duration;
  227. case XmlTypeCode.DayTimeDuration:
  228. if (dst == XmlTypeCode.YearMonthDuration)
  229. return false;
  230. goto case XmlTypeCode.Duration;
  231. }
  232. throw new NotImplementedException ();
  233. }
  234. // Individual conversion
  235. public static string AnyUriToString (string value)
  236. {
  237. return value;
  238. }
  239. public static byte [] Base64BinaryToHexBinary (byte [] value)
  240. {
  241. return XmlConvert.FromBinHexString (Convert.ToBase64String (value));
  242. }
  243. public static string Base64BinaryToString (byte [] value)
  244. {
  245. return Convert.ToBase64String (value);
  246. }
  247. public static decimal BooleanToDecimal (bool value)
  248. {
  249. return Convert.ToDecimal (value);
  250. }
  251. public static double BooleanToDouble (bool value)
  252. {
  253. return Convert.ToDouble (value);
  254. }
  255. public static float BooleanToFloat (bool value)
  256. {
  257. return Convert.ToSingle (value);
  258. }
  259. public static int BooleanToInt (bool value)
  260. {
  261. return Convert.ToInt32 (value);
  262. }
  263. public static long BooleanToInteger (bool value)
  264. {
  265. return Convert.ToInt64 (value);
  266. }
  267. public static string BooleanToString (bool value)
  268. {
  269. // It looks not returning "True"
  270. return value ? "true" : "false";
  271. }
  272. [MonoTODO]
  273. public static DateTime DateTimeToDate (DateTime value)
  274. {
  275. return value.Date;
  276. }
  277. [MonoTODO]
  278. public static DateTime DateTimeToGDay (DateTime value)
  279. {
  280. return new DateTime (0, 0, value.Day);
  281. }
  282. [MonoTODO]
  283. public static DateTime DateTimeToGMonth (DateTime value)
  284. {
  285. return new DateTime (0, value.Month, 0);
  286. }
  287. [MonoTODO]
  288. public static DateTime DateTimeToGMonthDay (DateTime value)
  289. {
  290. return new DateTime (0, value.Month, value.Day);
  291. }
  292. [MonoTODO]
  293. public static DateTime DateTimeToGYear (DateTime value)
  294. {
  295. return new DateTime (value.Year, 0, 0);
  296. }
  297. [MonoTODO]
  298. public static DateTime DateTimeToGYearMonth (DateTime value)
  299. {
  300. return new DateTime (value.Year, value.Month, 0);
  301. }
  302. [MonoTODO]
  303. public static DateTime DateTimeToTime (DateTime value)
  304. {
  305. return new DateTime (value.TimeOfDay.Ticks);
  306. }
  307. [MonoTODO]
  308. public static DateTime DateToDateTime (DateTime value)
  309. {
  310. return value.Date;
  311. }
  312. [MonoTODO]
  313. public static DateTime DateToGDay (DateTime value)
  314. {
  315. return new DateTime (0, 0, value.Day);
  316. }
  317. [MonoTODO]
  318. public static DateTime DateToGMonth (DateTime value)
  319. {
  320. return new DateTime (0, value.Month, 0);
  321. }
  322. [MonoTODO]
  323. public static DateTime DateToGMonthDay (DateTime value)
  324. {
  325. return new DateTime (0, value.Month, value.Day);
  326. }
  327. [MonoTODO]
  328. public static DateTime DateToGYear (DateTime value)
  329. {
  330. return new DateTime (value.Year, 0, 0);
  331. }
  332. [MonoTODO]
  333. public static DateTime DateToGYearMonth (DateTime value)
  334. {
  335. return new DateTime (value.Year, value.Month, 0);
  336. }
  337. [MonoTODO]
  338. public static string DateToString (DateTime value)
  339. {
  340. return XmlConvert.ToString (value);
  341. }
  342. [MonoTODO]
  343. public static string DateTimeToString (DateTime value)
  344. {
  345. return XmlConvert.ToString (value);
  346. }
  347. [MonoTODO]
  348. public static string DayTimeDurationToDuration (TimeSpan value)
  349. {
  350. return XmlConvert.ToString (value);
  351. }
  352. [MonoTODO]
  353. public static string DayTimeDurationToString (TimeSpan value)
  354. {
  355. return DayTimeDurationToDuration (value);
  356. }
  357. [MonoTODO]
  358. public static bool DecimalToBoolean (decimal value)
  359. {
  360. return value != 0;
  361. }
  362. [MonoTODO]
  363. public static double DecimalToDouble (decimal value)
  364. {
  365. return (double) value;
  366. }
  367. [MonoTODO]
  368. public static float DecimalToFloat (decimal value)
  369. {
  370. return (float) value;
  371. }
  372. [MonoTODO]
  373. public static int DecimalToInt (decimal value)
  374. {
  375. return (int) value;
  376. }
  377. [MonoTODO]
  378. public static long DecimalToInteger (decimal value)
  379. {
  380. return (long) value;
  381. }
  382. [MonoTODO] // what if value was negative?
  383. public static decimal DecimalToNonNegativeInteger (decimal value)
  384. {
  385. throw new NotImplementedException ();
  386. }
  387. [MonoTODO] // what if value was positive?
  388. public static decimal DecimalToNonPositiveInteger (decimal value)
  389. {
  390. throw new NotImplementedException ();
  391. }
  392. [MonoTODO]
  393. public static string DecimalToString (decimal value)
  394. {
  395. return XmlConvert.ToString (value);
  396. }
  397. [MonoTODO]
  398. public static bool DoubleToBoolean (double value)
  399. {
  400. return value != 0;
  401. }
  402. [MonoTODO]
  403. public static decimal DoubleToDecimal (double value)
  404. {
  405. return (decimal) value;
  406. }
  407. [MonoTODO]
  408. public static float DoubleToFloat (double value)
  409. {
  410. return (float) value;
  411. }
  412. [MonoTODO]
  413. public static int DoubleToInt (double value)
  414. {
  415. return (int) value;
  416. }
  417. [MonoTODO]
  418. public static long DoubleToInteger (double value)
  419. {
  420. return (long) value;
  421. }
  422. [MonoTODO] // what if value was negative?
  423. public static decimal DoubleToNonNegativeInteger (double value)
  424. {
  425. throw new NotImplementedException ();
  426. }
  427. [MonoTODO] // what if value was positive?
  428. public static decimal DoubleToNonPositiveInteger (double value)
  429. {
  430. throw new NotImplementedException ();
  431. }
  432. [MonoTODO]
  433. public static string DoubleToString (double value)
  434. {
  435. return XmlConvert.ToString (value);
  436. }
  437. [MonoTODO]
  438. public static TimeSpan DurationToDayTimeDuration (string value)
  439. {
  440. return XmlConvert.ToTimeSpan (value);
  441. }
  442. [MonoTODO]
  443. public static string DurationToString (string value)
  444. {
  445. return XmlConvert.ToString (XmlConvert.ToTimeSpan (value));
  446. }
  447. [MonoTODO]
  448. public static TimeSpan DurationToYearMonthDuration (string value)
  449. {
  450. return XmlConvert.ToTimeSpan (value);
  451. }
  452. [MonoTODO]
  453. public static bool FloatToBoolean (float value)
  454. {
  455. return value != 0;
  456. }
  457. [MonoTODO]
  458. public static decimal FloatToDecimal (float value)
  459. {
  460. return (decimal) value;
  461. }
  462. [MonoTODO]
  463. public static double FloatToDouble (float value)
  464. {
  465. return (double) value;
  466. }
  467. [MonoTODO]
  468. public static int FloatToInt (float value)
  469. {
  470. return (int) value;
  471. }
  472. [MonoTODO]
  473. public static long FloatToInteger (float value)
  474. {
  475. return (long) value;
  476. }
  477. [MonoTODO] // what if value was negative?
  478. public static decimal FloatToNonNegativeInteger (float value)
  479. {
  480. throw new NotImplementedException ();
  481. }
  482. [MonoTODO] // what if value was positive?
  483. public static decimal FloatToNonPositiveInteger (float value)
  484. {
  485. throw new NotImplementedException ();
  486. }
  487. [MonoTODO]
  488. public static string FloatToString (float value)
  489. {
  490. return XmlConvert.ToString (value);
  491. }
  492. [MonoTODO]
  493. public static string GDayToString (DateTime value)
  494. {
  495. return XmlConvert.ToString (TimeSpan.FromDays (value.Day));
  496. }
  497. [MonoTODO]
  498. public static string GMonthDayToString (DateTime value)
  499. {
  500. return XmlConvert.ToString (new TimeSpan (value.Day, value.Hour, value.Minute, value.Second));
  501. }
  502. [MonoTODO]
  503. public static string GMonthToString (DateTime value)
  504. {
  505. return XmlConvert.ToString (new TimeSpan (0, value.Month, 0));
  506. }
  507. [MonoTODO]
  508. public static string GYearMonthToString (DateTime value)
  509. {
  510. return XmlConvert.ToString (new TimeSpan (value.Year, value.Month, 0));
  511. }
  512. [MonoTODO]
  513. public static string GYearToString (DateTime value)
  514. {
  515. return XmlConvert.ToString (new TimeSpan (new DateTime (value.Year, 0, 0).Ticks));
  516. }
  517. public static string HexBinaryToString (byte [] data)
  518. {
  519. return XmlConvert.ToBinHexString (data);
  520. }
  521. [MonoTODO]
  522. public static byte [] HexBinaryToBase64Binary (byte [] data)
  523. {
  524. return data;//XmlConvert.ToBinHexString (data);
  525. }
  526. [MonoTODO]
  527. public static bool IntegerToBoolean (long value)
  528. {
  529. return value != 0;
  530. }
  531. [MonoTODO]
  532. public static decimal IntegerToDecimal (long value)
  533. {
  534. return (decimal) value;
  535. }
  536. [MonoTODO]
  537. public static double IntegerToDouble (long value)
  538. {
  539. return (double) value;
  540. }
  541. [MonoTODO]
  542. public static float IntegerToFloat (long value)
  543. {
  544. return (float) value;
  545. }
  546. [MonoTODO]
  547. public static int IntegerToInt (long value)
  548. {
  549. return (int) value;
  550. }
  551. [MonoTODO]
  552. public static string IntegerToString (long value)
  553. {
  554. return XmlConvert.ToString (value);
  555. }
  556. [MonoTODO]
  557. public static bool IntToBoolean (int value)
  558. {
  559. return value != 0;
  560. }
  561. [MonoTODO]
  562. public static decimal IntToDecimal (int value)
  563. {
  564. return (decimal) value;
  565. }
  566. [MonoTODO]
  567. public static double IntToDouble (int value)
  568. {
  569. return (double) value;
  570. }
  571. [MonoTODO]
  572. public static float IntToFloat (int value)
  573. {
  574. return (float) value;
  575. }
  576. [MonoTODO]
  577. public static long IntToInteger (int value)
  578. {
  579. return (long) value;
  580. }
  581. [MonoTODO]
  582. public static string IntToString (int value)
  583. {
  584. return XmlConvert.ToString (value);
  585. }
  586. [MonoTODO]
  587. public static string NonNegativeIntegerToString (decimal value)
  588. {
  589. return XmlConvert.ToString (value);
  590. }
  591. [MonoTODO]
  592. public static string NonPositiveIntegerToString (decimal value)
  593. {
  594. return XmlConvert.ToString (value);
  595. }
  596. [MonoTODO]
  597. public static DateTime TimeToDateTime (DateTime value)
  598. {
  599. return value;
  600. }
  601. [MonoTODO]
  602. public static string TimeToString (DateTime value)
  603. {
  604. return XmlConvert.ToString (value, "HH:mm:ssZ");
  605. }
  606. [MonoTODO]
  607. public static string YearMonthDurationToDuration (TimeSpan value)
  608. {
  609. return XmlConvert.ToString (value);
  610. }
  611. [MonoTODO]
  612. public static string YearMonthDurationToString (TimeSpan value)
  613. {
  614. return YearMonthDurationToDuration (value);
  615. }
  616. [MonoTODO]
  617. public static string StringToAnyUri (string value)
  618. {
  619. return value;
  620. }
  621. [MonoTODO]
  622. public static byte [] StringToBase64Binary (string value)
  623. {
  624. return Convert.FromBase64String (value);
  625. }
  626. [MonoTODO]
  627. public static bool StringToBoolean (string value)
  628. {
  629. return XmlConvert.ToBoolean (value);
  630. }
  631. [MonoTODO]
  632. public static DateTime StringToDate (string value)
  633. {
  634. return XmlConvert.ToDateTime (value);
  635. }
  636. [MonoTODO]
  637. public static DateTime StringToDateTime (string value)
  638. {
  639. return XmlConvert.ToDateTime (value);
  640. }
  641. [MonoTODO]
  642. public static TimeSpan StringToDayTimeDuration (string value)
  643. {
  644. return XmlConvert.ToTimeSpan (value);
  645. }
  646. [MonoTODO]
  647. public static decimal StringToDecimal (string value)
  648. {
  649. return XmlConvert.ToDecimal (value);
  650. }
  651. [MonoTODO]
  652. public static double StringToDouble (string value)
  653. {
  654. return XmlConvert.ToDouble (value);
  655. }
  656. [MonoTODO]
  657. public static string StringToDuration (string value)
  658. {
  659. return XmlConvert.ToString (XmlConvert.ToTimeSpan (value));
  660. }
  661. [MonoTODO]
  662. public static float StringToFloat (string value)
  663. {
  664. return XmlConvert.ToSingle (value);
  665. }
  666. [MonoTODO]
  667. public static DateTime StringToGDay (string value)
  668. {
  669. return XmlConvert.ToDateTime (value);
  670. }
  671. [MonoTODO]
  672. public static DateTime StringToGMonth (string value)
  673. {
  674. return XmlConvert.ToDateTime (value);
  675. }
  676. [MonoTODO]
  677. public static DateTime StringToGMonthDay (string value)
  678. {
  679. return XmlConvert.ToDateTime (value);
  680. }
  681. [MonoTODO]
  682. public static DateTime StringToGYear (string value)
  683. {
  684. return XmlConvert.ToDateTime (value);
  685. }
  686. [MonoTODO]
  687. public static DateTime StringToGYearMonth (string value)
  688. {
  689. return XmlConvert.ToDateTime (value);
  690. }
  691. [MonoTODO]
  692. public static byte [] StringToHexBinary (string value)
  693. {
  694. return XmlConvert.FromBinHexString (value);
  695. }
  696. [MonoTODO]
  697. public static int StringToInt (string value)
  698. {
  699. return XmlConvert.ToInt32 (value);
  700. }
  701. [MonoTODO]
  702. public static long StringToInteger (string value)
  703. {
  704. return XmlConvert.ToInt64 (value);
  705. }
  706. [MonoTODO]
  707. public static decimal StringToNonNegativeInteger (string value)
  708. {
  709. return XmlConvert.ToDecimal (value);
  710. }
  711. [MonoTODO]
  712. public static decimal StringToNonPositiveInteger (string value)
  713. {
  714. return XmlConvert.ToDecimal (value);
  715. }
  716. [MonoTODO]
  717. public static DateTime StringToTime (string value)
  718. {
  719. return XmlConvert.ToDateTime (value);
  720. }
  721. [MonoTODO]
  722. public static long StringToUnsignedInt (string value)
  723. {
  724. return XmlConvert.ToInt32 (value);
  725. }
  726. [MonoTODO]
  727. public static decimal StringToUnsignedLong (string value)
  728. {
  729. return XmlConvert.ToInt32 (value);
  730. }
  731. [MonoTODO]
  732. public static int StringToUnsignedShort (string value)
  733. {
  734. return XmlConvert.ToInt32 (value);
  735. }
  736. [MonoTODO]
  737. public static TimeSpan StringToYearMonthDuration (string value)
  738. {
  739. return XmlConvert.ToTimeSpan (value);
  740. }
  741. [MonoTODO]
  742. public static string ItemToAnyUri (XPathItem value)
  743. {
  744. return value.Value;
  745. }
  746. [MonoTODO]
  747. public static byte [] ItemToBase64Binary (XPathItem value)
  748. {
  749. return Convert.FromBase64String (value.Value);
  750. }
  751. [MonoTODO]
  752. public static bool ItemToBoolean (XPathItem value)
  753. {
  754. return XmlConvert.ToBoolean (value.Value);
  755. }
  756. [MonoTODO]
  757. public static DateTime ItemToDate (XPathItem value)
  758. {
  759. return XmlConvert.ToDateTime (value.Value);
  760. }
  761. [MonoTODO]
  762. public static DateTime ItemToDateTime (XPathItem value)
  763. {
  764. return XmlConvert.ToDateTime (value.Value);
  765. }
  766. [MonoTODO]
  767. public static TimeSpan ItemToDayTimeDuration (XPathItem value)
  768. {
  769. return XmlConvert.ToTimeSpan (value.Value);
  770. }
  771. [MonoTODO]
  772. public static decimal ItemToDecimal (XPathItem value)
  773. {
  774. return XmlConvert.ToDecimal (value.Value);
  775. }
  776. [MonoTODO]
  777. public static double ItemToDouble (XPathItem value)
  778. {
  779. return XmlConvert.ToDouble (value.Value);
  780. }
  781. [MonoTODO]
  782. public static string ItemToDuration (XPathItem value)
  783. {
  784. return XmlConvert.ToString (XmlConvert.ToTimeSpan (value.Value));
  785. }
  786. [MonoTODO]
  787. public static float ItemToFloat (XPathItem value)
  788. {
  789. return XmlConvert.ToSingle (value.Value);
  790. }
  791. [MonoTODO]
  792. public static DateTime ItemToGDay (XPathItem value)
  793. {
  794. return XmlConvert.ToDateTime (value.Value);
  795. }
  796. [MonoTODO]
  797. public static DateTime ItemToGMonth (XPathItem value)
  798. {
  799. return XmlConvert.ToDateTime (value.Value);
  800. }
  801. [MonoTODO]
  802. public static DateTime ItemToGMonthDay (XPathItem value)
  803. {
  804. return XmlConvert.ToDateTime (value.Value);
  805. }
  806. [MonoTODO]
  807. public static DateTime ItemToGYear (XPathItem value)
  808. {
  809. return XmlConvert.ToDateTime (value.Value);
  810. }
  811. [MonoTODO]
  812. public static DateTime ItemToGYearMonth (XPathItem value)
  813. {
  814. return XmlConvert.ToDateTime (value.Value);
  815. }
  816. [MonoTODO]
  817. public static byte [] ItemToHexBinary (XPathItem value)
  818. {
  819. return XmlConvert.FromBinHexString (value.Value);
  820. }
  821. [MonoTODO]
  822. public static int ItemToInt (XPathItem value)
  823. {
  824. return XmlConvert.ToInt32 (value.Value);
  825. }
  826. [MonoTODO]
  827. public static long ItemToInteger (XPathItem value)
  828. {
  829. return XmlConvert.ToInt64 (value.Value);
  830. }
  831. [MonoTODO]
  832. public static XPathItem ItemToItem (XPathItem value, XmlSchemaType schemaTypeDest)
  833. {
  834. return new XPathAtomicValue (value.Value, schemaTypeDest);
  835. }
  836. [MonoTODO]
  837. public static decimal ItemToNonNegativeInteger (XPathItem value)
  838. {
  839. return XmlConvert.ToDecimal (value.Value);
  840. }
  841. [MonoTODO]
  842. public static decimal ItemToNonPositiveInteger (XPathItem value)
  843. {
  844. return XmlConvert.ToDecimal (value.Value);
  845. }
  846. [MonoTODO]
  847. public static XmlQualifiedName ItemToQName (XPathItem value)
  848. {
  849. return (XmlQualifiedName) value.TypedValue;
  850. }
  851. [MonoTODO]
  852. public static string ItemToString (XPathItem value)
  853. {
  854. if (value.ValueType == typeof (DateTime))
  855. return XmlConvert.ToString ((DateTime) value.TypedValue);
  856. if (value.TypedValue is XmlQualifiedName)
  857. throw new ArgumentException ("Invalid cast from schema QName type to string type.");
  858. return value.Value;
  859. }
  860. [MonoTODO]
  861. public static DateTime ItemToTime (XPathItem value)
  862. {
  863. return XmlConvert.ToDateTime (value.Value);
  864. }
  865. [MonoTODO]
  866. public static long ItemToUnsignedInt (XPathItem value)
  867. {
  868. return XmlConvert.ToInt32 (value.Value);
  869. }
  870. [MonoTODO]
  871. public static decimal ItemToUnsignedLong (XPathItem value)
  872. {
  873. return XmlConvert.ToInt32 (value.Value);
  874. }
  875. [MonoTODO]
  876. public static int ItemToUnsignedShort (XPathItem value)
  877. {
  878. return XmlConvert.ToInt32 (value.Value);
  879. }
  880. [MonoTODO]
  881. public static TimeSpan ItemToYearMonthDuration (XPathItem value)
  882. {
  883. return XmlConvert.ToTimeSpan (value.Value);
  884. }
  885. }
  886. }
  887. #endif