You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlbeans-dev@xml.apache.org by Noah Campbell <no...@gmail.com> on 2004/06/23 05:03:50 UTC

Re: A New approach for XPath using Namespace

What if your namespace is http://a.b.c/c/d.xsd?  Do you include d.xsd
as the namespace?  Is this even proper?

Noah

On Tue, 22 Jun 2004 17:50:21 -0700, nn <nn...@comcast.net> wrote:
> 
> Hi,
> I come up with the new solution for namespace resolution for XPath in
> XMLBeans.
> the idea is to use taget document's targetNamespace information in XML
> Schema(stored in schema class in XMLBeans generated class for XPath.
> for instance, selectPath will internally use PurchaseOrderDocument to get
> the targetNamespace information and use it for the default namespace for the
> XPath.
> 
>     PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(new
> File("xml/data/po.xml"));
>     doc.selectPath("./purchaseOrder/shipTo[name = 'Helen Zoe']");
> 
> This will be processed successfully.
> And if URI is something like http://a.b.c/d/e, it will use e as the prefix
> for this
> namespace.
> 
> so
>     doc.selectPath("./po:purchaseOrder/po:shipTo[po:name = 'Helen Zoe']");
> is also accepted.
> 
> This is a convention, may not have to be supported.
> I think this approach is quite appropriate for XML Schema assoiated
> document.
> Getting prefix information from target document are not so satisfactory for
> it depends on the proper prefix usage of document.
> This approach does not depend on the choice of prefix in the target
> document.
> 
> in order to achieve this, XMLBean code generation must be changed so that it
> provides the targetNamespace information in the generated class.
> The current code generation does not maintaing this information.
> 
> Also I found a minor problem of JAXEN, we need to change a line so that it
> can handle default namaespace.
> 
> nn
> 
> followings are the relevent codes.
> 
> -----
> 
> package xquery.engine.impl;
> 
> import java.io.File;
> import org.apache.xmlbeans.XmlObject;
> import com.example.po.*;
> 
> public class POTest {
>     private static String[] test_xpathes = new String[]{
>   "//po:purchaseOrder",
>   "./po:purchaseOrder/po:shipTo/po:name",
>   "./po:purchaseOrder/po:shipTo[po:name = 'Helen Zoe']",
>   "//purchaseOrder",
>   "./purchaseOrder/shipTo/name",
>   "./purchaseOrder/shipTo[name = 'Helen Zoe']",
>   };
> 
>     public static void test() throws Throwable {
>  PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(new
> File("xml/data/po.xml"));
>  for (int i = 0; i < test_xpathes.length; i++) {
>      String xpath = test_xpathes[i];
>      System.out.println("\n===== test: xpath: "+xpath+" =====");
>      filter(doc.selectPath(xpath));
>  }
>     }
>     public static void filter(XmlObject[] result) throws Throwable {
>         for (int i = 0; i < result.length; i++) {
>      XmlObject obj = result[i];
>      System.out.println(">> filter: "+obj.getClass()+", "+obj);
>  }
>     }
> 
>     public static void main(String argv[]) {
>  try {
>      test();
>  } catch (Throwable err) {
>      err.printStackTrace();
>  }
>     }
> }
> 
> -------
> 
> package org.apache.xmlbeans.impl.xpath.jaxen;
> 
> public class XBeansNamespace
> {
>     public static void addNamespaces(BaseXPath baseXPath, XmlObject doc)
> throws JaxenException {
>  SchemaTypeImpl sh = (SchemaTypeImpl)doc.schemaType();
> 
>  // in order to get targetNamespace, xmlbean code generation must be
> modified slightly
>  String uri = sh.getTargetNamespace();
> 
>  // System.out.println(">> default namespace: "+uri);
>  if (uri != null) {
>      // default uri.
>      // in order to use default uri, a minor fix of jaxen is required.
>      baseXPath.addNamespace("", uri);
> 
>      // from uri, http://a.b.c/c/d, use d for the prefix
>      // this is a common convention. may not have to be added..
>      int idx = uri.lastIndexOf("/");
>      if (idx >= 0) {
>   String prefix = uri.substring(idx+1);
>   baseXPath.addNamespace(prefix, uri);
>      }
>  }
>     }
> 
> }
> 
> -------
> package org.apache.xmlbeans.impl.xpath.jaxen;
> 
> public class XBeansXPath extends BaseXPath
>     public List selectNodes(Object node) throws JaxenException
>     {
>         XmlCursor xc;
>  XmlObject xmlObj;
>         if (node instanceof XmlObject)
>         {
>      xmlObj = (XmlObject)node;
>      xc = xmlObj.newCursor();
>         }
>         else if (node instanceof XmlCursor)
>  {
>      xc = (XmlCursor)node;
>      xmlObj = xc.getObject();
>             xc = xc.newCursor();
>         }
>         else
>             throw new IllegalArgumentException("node must be an XmlObject or
> an XmlCursor, found: " + node.getClass());
> 
>  XBeansNamespace.addNamespaces(this, xmlObj); // nn (support xpath including
> namespace)
>         ((XBeansNavigator)getNavigator()).setCursor(xc);
>         return new ListImpl(super.selectNodes(
> XBeansNavigator.getBookmarkInThisPlace(xc) ));
>     }
> 
> -----
> package org.apache.xmlbeans.impl.xpath.jaxen;
> 
> public class XBeansXPathAdv
> 
>     public List selectNodes(Object node) throws JaxenException
>     {
>         XmlCursor xc;
>         xc = ((XmlCursor)node);
>  XmlObject xmlObj = xc.getObject();
>  XBeansNamespace.addNamespaces(this, xmlObj);
>         ((XBeansNavigator)getNavigator()).setCursor(xc);
>         return super.selectNodes(
> XBeansNavigator.getBookmarkInThisPlace(xc) );
>     }
> 
> -----
> 
> SchemaTypeCodePrinter.java
> 
> package org.apache.xmlbeans.impl.schema;
> ....
> 
>    // nn, store target namespace uri of document
>     void printSetParseContext(SchemaType sType) throws IOException {
>         String shortName = sType.getShortJavaImplName();
>         String baseClass = getBaseClass(sType);
>  System.out.println(">> printsetParseContext, shortName: "+shortName+",
> baseClass: "+baseClass);
>  if (sType.isDocumentType()) {
>      QName name = sType.getDocumentElementName();
>      String uri = name.getNamespaceURI();
>      System.out.println(">> printsetParseContext, name: "+name+", uri:
> "+uri);
>      if (uri != null && !uri.equals("")) {
>   emit("org.apache.xmlbeans.impl.schema.SchemaTypeImpl sh =
> (org.apache.xmlbeans.impl.schema.SchemaTypeImpl)schemaType();"); // nn
>   emit("sh.setParseContext(null, \""+uri+"\", false, false);"); // nn
>      }
>  }
>     }
>     void printConstructor(SchemaType sType, String shortName) throws
> IOException {
>         emit("");
>         emit("public " + shortName + "(org.apache.xmlbeans.SchemaType
> sType)");
>         startBlock();
>         emit("super(sType" + (sType.getSimpleVariety() ==
> SchemaType.NOT_SIMPLE ?
>                              "":
>                              ", " + !sType.isSimpleType()) +
>              ");");
>  printSetParseContext(sType); // nn
>         endBlock();
> 
>         if (sType.getSimpleVariety() != SchemaType.NOT_SIMPLE)
>         {
>             emit("");
>             emit("protected " + shortName + "(org.apache.xmlbeans.SchemaType
> sType, boolean b)");
>             startBlock();
>             emit("super(sType, b);");
>             printSetParseContext(sType); // nn
>             endBlock();
>         }
>     }
> 
> ----
> Jaxen (temporary) bug fix: to support defialy namespace:
> package org.jaxen.expr;
> ..
> public class DefaultNameStep extends DefaultStep implements NameStep {
> ...
>     public DefaultNameStep(IterableAxis axis,
>                            String prefix,
>                            String localName,
>                            PredicateSet predicateSet) {
>         super(axis, predicateSet);
> 
>         this.prefix = prefix;
>         this.localName = localName;
>         this.matchesAnyName = "*".equals(localName);
>  //        this.hasPrefix = (this.prefix != null && this.prefix.length() >
> 0); // nn
>         this.hasPrefix = true; // should check default uri is defined or not
>     }
> 
> - ---------------------------------------------------------------------
> To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
> Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/
> 
>

- ---------------------------------------------------------------------
To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/


Re: A New approach for XPath using Namespace

Posted by nn <nn...@comcast.net>.
> What if your namespace is http://a.b.c/c/d.xsd?  Do you include d.xsd
> as the namespace?  Is this even proper?

This portion is kind of optional, there is no good guidance for choosing
prefix from uri.
So for instance we may remove .xsd.
I think, using default namespace would be more appropriate and convenient.
nn

>
> Noah
>
> On Tue, 22 Jun 2004 17:50:21 -0700, nn <nn...@comcast.net> wrote:
> >
> > Hi,
> > I come up with the new solution for namespace resolution for XPath in
> > XMLBeans.
> > the idea is to use taget document's targetNamespace information in XML
> > Schema(stored in schema class in XMLBeans generated class for XPath.
> > for instance, selectPath will internally use PurchaseOrderDocument to
get
> > the targetNamespace information and use it for the default namespace for
the
> > XPath.
> >
> >     PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(new
> > File("xml/data/po.xml"));
> >     doc.selectPath("./purchaseOrder/shipTo[name = 'Helen Zoe']");
> >
> > This will be processed successfully.
> > And if URI is something like http://a.b.c/d/e, it will use e as the
prefix
> > for this
> > namespace.
> >
> > so
> >     doc.selectPath("./po:purchaseOrder/po:shipTo[po:name = 'Helen
Zoe']");
> > is also accepted.
> >
> > This is a convention, may not have to be supported.
> > I think this approach is quite appropriate for XML Schema assoiated
> > document.
> > Getting prefix information from target document are not so satisfactory
for
> > it depends on the proper prefix usage of document.
> > This approach does not depend on the choice of prefix in the target
> > document.
> >
> > in order to achieve this, XMLBean code generation must be changed so
that it
> > provides the targetNamespace information in the generated class.
> > The current code generation does not maintaing this information.
> >
> > Also I found a minor problem of JAXEN, we need to change a line so that
it
> > can handle default namaespace.
> >
> > nn
> >
> > followings are the relevent codes.
> >
> > -----
> >
> > package xquery.engine.impl;
> >
> > import java.io.File;
> > import org.apache.xmlbeans.XmlObject;
> > import com.example.po.*;
> >
> > public class POTest {
> >     private static String[] test_xpathes = new String[]{
> >   "//po:purchaseOrder",
> >   "./po:purchaseOrder/po:shipTo/po:name",
> >   "./po:purchaseOrder/po:shipTo[po:name = 'Helen Zoe']",
> >   "//purchaseOrder",
> >   "./purchaseOrder/shipTo/name",
> >   "./purchaseOrder/shipTo[name = 'Helen Zoe']",
> >   };
> >
> >     public static void test() throws Throwable {
> >  PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(new
> > File("xml/data/po.xml"));
> >  for (int i = 0; i < test_xpathes.length; i++) {
> >      String xpath = test_xpathes[i];
> >      System.out.println("\n===== test: xpath: "+xpath+" =====");
> >      filter(doc.selectPath(xpath));
> >  }
> >     }
> >     public static void filter(XmlObject[] result) throws Throwable {
> >         for (int i = 0; i < result.length; i++) {
> >      XmlObject obj = result[i];
> >      System.out.println(">> filter: "+obj.getClass()+", "+obj);
> >  }
> >     }
> >
> >     public static void main(String argv[]) {
> >  try {
> >      test();
> >  } catch (Throwable err) {
> >      err.printStackTrace();
> >  }
> >     }
> > }
> >
> > -------
> >
> > package org.apache.xmlbeans.impl.xpath.jaxen;
> >
> > public class XBeansNamespace
> > {
> >     public static void addNamespaces(BaseXPath baseXPath, XmlObject doc)
> > throws JaxenException {
> >  SchemaTypeImpl sh = (SchemaTypeImpl)doc.schemaType();
> >
> >  // in order to get targetNamespace, xmlbean code generation must be
> > modified slightly
> >  String uri = sh.getTargetNamespace();
> >
> >  // System.out.println(">> default namespace: "+uri);
> >  if (uri != null) {
> >      // default uri.
> >      // in order to use default uri, a minor fix of jaxen is required.
> >      baseXPath.addNamespace("", uri);
> >
> >      // from uri, http://a.b.c/c/d, use d for the prefix
> >      // this is a common convention. may not have to be added..
> >      int idx = uri.lastIndexOf("/");
> >      if (idx >= 0) {
> >   String prefix = uri.substring(idx+1);
> >   baseXPath.addNamespace(prefix, uri);
> >      }
> >  }
> >     }
> >
> > }
> >
> > -------
> > package org.apache.xmlbeans.impl.xpath.jaxen;
> >
> > public class XBeansXPath extends BaseXPath
> >     public List selectNodes(Object node) throws JaxenException
> >     {
> >         XmlCursor xc;
> >  XmlObject xmlObj;
> >         if (node instanceof XmlObject)
> >         {
> >      xmlObj = (XmlObject)node;
> >      xc = xmlObj.newCursor();
> >         }
> >         else if (node instanceof XmlCursor)
> >  {
> >      xc = (XmlCursor)node;
> >      xmlObj = xc.getObject();
> >             xc = xc.newCursor();
> >         }
> >         else
> >             throw new IllegalArgumentException("node must be an
XmlObject or
> > an XmlCursor, found: " + node.getClass());
> >
> >  XBeansNamespace.addNamespaces(this, xmlObj); // nn (support xpath
including
> > namespace)
> >         ((XBeansNavigator)getNavigator()).setCursor(xc);
> >         return new ListImpl(super.selectNodes(
> > XBeansNavigator.getBookmarkInThisPlace(xc) ));
> >     }
> >
> > -----
> > package org.apache.xmlbeans.impl.xpath.jaxen;
> >
> > public class XBeansXPathAdv
> >
> >     public List selectNodes(Object node) throws JaxenException
> >     {
> >         XmlCursor xc;
> >         xc = ((XmlCursor)node);
> >  XmlObject xmlObj = xc.getObject();
> >  XBeansNamespace.addNamespaces(this, xmlObj);
> >         ((XBeansNavigator)getNavigator()).setCursor(xc);
> >         return super.selectNodes(
> > XBeansNavigator.getBookmarkInThisPlace(xc) );
> >     }
> >
> > -----
> >
> > SchemaTypeCodePrinter.java
> >
> > package org.apache.xmlbeans.impl.schema;
> > ....
> >
> >    // nn, store target namespace uri of document
> >     void printSetParseContext(SchemaType sType) throws IOException {
> >         String shortName = sType.getShortJavaImplName();
> >         String baseClass = getBaseClass(sType);
> >  System.out.println(">> printsetParseContext, shortName: "+shortName+",
> > baseClass: "+baseClass);
> >  if (sType.isDocumentType()) {
> >      QName name = sType.getDocumentElementName();
> >      String uri = name.getNamespaceURI();
> >      System.out.println(">> printsetParseContext, name: "+name+", uri:
> > "+uri);
> >      if (uri != null && !uri.equals("")) {
> >   emit("org.apache.xmlbeans.impl.schema.SchemaTypeImpl sh =
> > (org.apache.xmlbeans.impl.schema.SchemaTypeImpl)schemaType();"); // nn
> >   emit("sh.setParseContext(null, \""+uri+"\", false, false);"); // nn
> >      }
> >  }
> >     }
> >     void printConstructor(SchemaType sType, String shortName) throws
> > IOException {
> >         emit("");
> >         emit("public " + shortName + "(org.apache.xmlbeans.SchemaType
> > sType)");
> >         startBlock();
> >         emit("super(sType" + (sType.getSimpleVariety() ==
> > SchemaType.NOT_SIMPLE ?
> >                              "":
> >                              ", " + !sType.isSimpleType()) +
> >              ");");
> >  printSetParseContext(sType); // nn
> >         endBlock();
> >
> >         if (sType.getSimpleVariety() != SchemaType.NOT_SIMPLE)
> >         {
> >             emit("");
> >             emit("protected " + shortName +
"(org.apache.xmlbeans.SchemaType
> > sType, boolean b)");
> >             startBlock();
> >             emit("super(sType, b);");
> >             printSetParseContext(sType); // nn
> >             endBlock();
> >         }
> >     }
> >
> > ----
> > Jaxen (temporary) bug fix: to support defialy namespace:
> > package org.jaxen.expr;
> > ..
> > public class DefaultNameStep extends DefaultStep implements NameStep {
> > ...
> >     public DefaultNameStep(IterableAxis axis,
> >                            String prefix,
> >                            String localName,
> >                            PredicateSet predicateSet) {
> >         super(axis, predicateSet);
> >
> >         this.prefix = prefix;
> >         this.localName = localName;
> >         this.matchesAnyName = "*".equals(localName);
> >  //        this.hasPrefix = (this.prefix != null && this.prefix.length()
>
> > 0); // nn
> >         this.hasPrefix = true; // should check default uri is defined or
not
> >     }
> >
> > - ---------------------------------------------------------------------
> > To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
> > For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
> > Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/
> >
> >
>
> - ---------------------------------------------------------------------
> To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
> Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/
>


- ---------------------------------------------------------------------
To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/


Re: A New approach for XPath using Namespace

Posted by nn <nn...@comcast.net>.
> What if your namespace is http://a.b.c/c/d.xsd?  Do you include d.xsd
> as the namespace?  Is this even proper?

This portion is kind of optional, there is no good guidance for choosing
prefix from uri.
So for instance we may remove .xsd.
I think, using default namespace would be more appropriate and convenient.
nn

>
> Noah
>
> On Tue, 22 Jun 2004 17:50:21 -0700, nn <nn...@comcast.net> wrote:
> >
> > Hi,
> > I come up with the new solution for namespace resolution for XPath in
> > XMLBeans.
> > the idea is to use taget document's targetNamespace information in XML
> > Schema(stored in schema class in XMLBeans generated class for XPath.
> > for instance, selectPath will internally use PurchaseOrderDocument to
get
> > the targetNamespace information and use it for the default namespace for
the
> > XPath.
> >
> >     PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(new
> > File("xml/data/po.xml"));
> >     doc.selectPath("./purchaseOrder/shipTo[name = 'Helen Zoe']");
> >
> > This will be processed successfully.
> > And if URI is something like http://a.b.c/d/e, it will use e as the
prefix
> > for this
> > namespace.
> >
> > so
> >     doc.selectPath("./po:purchaseOrder/po:shipTo[po:name = 'Helen
Zoe']");
> > is also accepted.
> >
> > This is a convention, may not have to be supported.
> > I think this approach is quite appropriate for XML Schema assoiated
> > document.
> > Getting prefix information from target document are not so satisfactory
for
> > it depends on the proper prefix usage of document.
> > This approach does not depend on the choice of prefix in the target
> > document.
> >
> > in order to achieve this, XMLBean code generation must be changed so
that it
> > provides the targetNamespace information in the generated class.
> > The current code generation does not maintaing this information.
> >
> > Also I found a minor problem of JAXEN, we need to change a line so that
it
> > can handle default namaespace.
> >
> > nn
> >
> > followings are the relevent codes.
> >
> > -----
> >
> > package xquery.engine.impl;
> >
> > import java.io.File;
> > import org.apache.xmlbeans.XmlObject;
> > import com.example.po.*;
> >
> > public class POTest {
> >     private static String[] test_xpathes = new String[]{
> >   "//po:purchaseOrder",
> >   "./po:purchaseOrder/po:shipTo/po:name",
> >   "./po:purchaseOrder/po:shipTo[po:name = 'Helen Zoe']",
> >   "//purchaseOrder",
> >   "./purchaseOrder/shipTo/name",
> >   "./purchaseOrder/shipTo[name = 'Helen Zoe']",
> >   };
> >
> >     public static void test() throws Throwable {
> >  PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(new
> > File("xml/data/po.xml"));
> >  for (int i = 0; i < test_xpathes.length; i++) {
> >      String xpath = test_xpathes[i];
> >      System.out.println("\n===== test: xpath: "+xpath+" =====");
> >      filter(doc.selectPath(xpath));
> >  }
> >     }
> >     public static void filter(XmlObject[] result) throws Throwable {
> >         for (int i = 0; i < result.length; i++) {
> >      XmlObject obj = result[i];
> >      System.out.println(">> filter: "+obj.getClass()+", "+obj);
> >  }
> >     }
> >
> >     public static void main(String argv[]) {
> >  try {
> >      test();
> >  } catch (Throwable err) {
> >      err.printStackTrace();
> >  }
> >     }
> > }
> >
> > -------
> >
> > package org.apache.xmlbeans.impl.xpath.jaxen;
> >
> > public class XBeansNamespace
> > {
> >     public static void addNamespaces(BaseXPath baseXPath, XmlObject doc)
> > throws JaxenException {
> >  SchemaTypeImpl sh = (SchemaTypeImpl)doc.schemaType();
> >
> >  // in order to get targetNamespace, xmlbean code generation must be
> > modified slightly
> >  String uri = sh.getTargetNamespace();
> >
> >  // System.out.println(">> default namespace: "+uri);
> >  if (uri != null) {
> >      // default uri.
> >      // in order to use default uri, a minor fix of jaxen is required.
> >      baseXPath.addNamespace("", uri);
> >
> >      // from uri, http://a.b.c/c/d, use d for the prefix
> >      // this is a common convention. may not have to be added..
> >      int idx = uri.lastIndexOf("/");
> >      if (idx >= 0) {
> >   String prefix = uri.substring(idx+1);
> >   baseXPath.addNamespace(prefix, uri);
> >      }
> >  }
> >     }
> >
> > }
> >
> > -------
> > package org.apache.xmlbeans.impl.xpath.jaxen;
> >
> > public class XBeansXPath extends BaseXPath
> >     public List selectNodes(Object node) throws JaxenException
> >     {
> >         XmlCursor xc;
> >  XmlObject xmlObj;
> >         if (node instanceof XmlObject)
> >         {
> >      xmlObj = (XmlObject)node;
> >      xc = xmlObj.newCursor();
> >         }
> >         else if (node instanceof XmlCursor)
> >  {
> >      xc = (XmlCursor)node;
> >      xmlObj = xc.getObject();
> >             xc = xc.newCursor();
> >         }
> >         else
> >             throw new IllegalArgumentException("node must be an
XmlObject or
> > an XmlCursor, found: " + node.getClass());
> >
> >  XBeansNamespace.addNamespaces(this, xmlObj); // nn (support xpath
including
> > namespace)
> >         ((XBeansNavigator)getNavigator()).setCursor(xc);
> >         return new ListImpl(super.selectNodes(
> > XBeansNavigator.getBookmarkInThisPlace(xc) ));
> >     }
> >
> > -----
> > package org.apache.xmlbeans.impl.xpath.jaxen;
> >
> > public class XBeansXPathAdv
> >
> >     public List selectNodes(Object node) throws JaxenException
> >     {
> >         XmlCursor xc;
> >         xc = ((XmlCursor)node);
> >  XmlObject xmlObj = xc.getObject();
> >  XBeansNamespace.addNamespaces(this, xmlObj);
> >         ((XBeansNavigator)getNavigator()).setCursor(xc);
> >         return super.selectNodes(
> > XBeansNavigator.getBookmarkInThisPlace(xc) );
> >     }
> >
> > -----
> >
> > SchemaTypeCodePrinter.java
> >
> > package org.apache.xmlbeans.impl.schema;
> > ....
> >
> >    // nn, store target namespace uri of document
> >     void printSetParseContext(SchemaType sType) throws IOException {
> >         String shortName = sType.getShortJavaImplName();
> >         String baseClass = getBaseClass(sType);
> >  System.out.println(">> printsetParseContext, shortName: "+shortName+",
> > baseClass: "+baseClass);
> >  if (sType.isDocumentType()) {
> >      QName name = sType.getDocumentElementName();
> >      String uri = name.getNamespaceURI();
> >      System.out.println(">> printsetParseContext, name: "+name+", uri:
> > "+uri);
> >      if (uri != null && !uri.equals("")) {
> >   emit("org.apache.xmlbeans.impl.schema.SchemaTypeImpl sh =
> > (org.apache.xmlbeans.impl.schema.SchemaTypeImpl)schemaType();"); // nn
> >   emit("sh.setParseContext(null, \""+uri+"\", false, false);"); // nn
> >      }
> >  }
> >     }
> >     void printConstructor(SchemaType sType, String shortName) throws
> > IOException {
> >         emit("");
> >         emit("public " + shortName + "(org.apache.xmlbeans.SchemaType
> > sType)");
> >         startBlock();
> >         emit("super(sType" + (sType.getSimpleVariety() ==
> > SchemaType.NOT_SIMPLE ?
> >                              "":
> >                              ", " + !sType.isSimpleType()) +
> >              ");");
> >  printSetParseContext(sType); // nn
> >         endBlock();
> >
> >         if (sType.getSimpleVariety() != SchemaType.NOT_SIMPLE)
> >         {
> >             emit("");
> >             emit("protected " + shortName +
"(org.apache.xmlbeans.SchemaType
> > sType, boolean b)");
> >             startBlock();
> >             emit("super(sType, b);");
> >             printSetParseContext(sType); // nn
> >             endBlock();
> >         }
> >     }
> >
> > ----
> > Jaxen (temporary) bug fix: to support defialy namespace:
> > package org.jaxen.expr;
> > ..
> > public class DefaultNameStep extends DefaultStep implements NameStep {
> > ...
> >     public DefaultNameStep(IterableAxis axis,
> >                            String prefix,
> >                            String localName,
> >                            PredicateSet predicateSet) {
> >         super(axis, predicateSet);
> >
> >         this.prefix = prefix;
> >         this.localName = localName;
> >         this.matchesAnyName = "*".equals(localName);
> >  //        this.hasPrefix = (this.prefix != null && this.prefix.length()
>
> > 0); // nn
> >         this.hasPrefix = true; // should check default uri is defined or
not
> >     }
> >
> > - ---------------------------------------------------------------------
> > To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
> > For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
> > Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/
> >
> >
>
> - ---------------------------------------------------------------------
> To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
> Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/
>


- ---------------------------------------------------------------------
To unsubscribe, e-mail:   xmlbeans-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-dev-help@xml.apache.org
Apache XMLBeans Project -- URL: http://xml.apache.org/xmlbeans/