diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-01-08 14:49:11 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-01-08 14:49:11 +0200 |
commit | 3f8c237b1abe02df8147170f2fc037edc3f384db (patch) | |
tree | 2531f2fddd4cadaab27cd37eb37ebcac3481acec /xsd/cxx/tree/default-value.cxx | |
parent | 0153d99ab976ac88f432099ddfe840e15d4f6a8e (diff) |
Add support for default/fixed values of QName type
Diffstat (limited to 'xsd/cxx/tree/default-value.cxx')
-rw-r--r-- | xsd/cxx/tree/default-value.cxx | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/xsd/cxx/tree/default-value.cxx b/xsd/cxx/tree/default-value.cxx index c859949..05679f7 100644 --- a/xsd/cxx/tree/default-value.cxx +++ b/xsd/cxx/tree/default-value.cxx @@ -514,8 +514,36 @@ namespace CXX // Qualified name. // Void InitValue:: - traverse (SemanticGraph::Fundamental::QName&) + traverse (SemanticGraph::Fundamental::QName& t) { + Size p (value_.rfind ('#')); + + if (p != String::npos) + { + String ns (value_, 0, p); + String qname (value_, p + 1, String::npos); + + collapse (ns); + collapse (qname); + + p = qname.find (':'); + + String name; + if (p != String::npos) + name.assign (qname, p + 1, String::npos); + else + name = qname; + + os << fq_name (t) << " (" << strlit (ns) << ", " << + strlit (name) << ")"; + } + else + { + // Unqualified name. + // + collapse (value_); + os << fq_name (t) << " (" << strlit (value_) << ")"; + } } // ID/IDREF. |