ものがたり(旧)

atsushieno.hatenablog.com に続く

XmlValueConverter: What For?

XPathAtomicValueとXmlValueConverterは、何をしたいのか、いまいち分からないところがある。XPathAtomicValueは、XQuery 1.0 and XPath 2.0 Functions and Operatorsのセクション5 "constructor functions"をサポートするために作られたクラスである、と思っているのだけど、これがXmlSchemaTypeと各種ValueTypeの初期値(objectでもいいけど)を受け取った上で、ValueAsXXXをもつ理由はよく分からない。

また、エラーのstacktraceから読み取れるように、XPathAtomicValueは、内部でXmlValueConverterを使っていて、これはさらにXQueryConvertを呼んでいるのだけど、XmlValueConverterがどのような設計思想に基づいて作られているのかは不明だ。少なくとも、以下の「QNameをstringにキャストする」コードはエラーにならないので:


XmlSchemaType.GetBuiltInSimpleType (
new XmlQualifiedName ("string", XmlSchema.Namespace))
.ValueConverter.ToString (
new XmlQualifiedName ("test"),
new XmlNamespaceManager (new NameTable ()));

上記Function and Operators仕様のセクション17に準拠するものではなさそうだ。じゃあ一体何のために作られたクラスなの?