Ok strangely I commented out xsdParser.printSchema(), compiled and ran it
and itprinted 1!! I uncommented xsdParser.printSchema() and it still prints
1 so it's working
now!

Thanks for your help!


On Fri, Apr 10, 2009 at 10:47 PM, Patrick Kiernan <hossb...@gmail.com>wrote:

> Ok that works now and it prints 1 for the answer which is correct. Finally!
> The different with my other program is I have the following class:
>
>
> package schemaparser;
>
> import java.io.*;
>
> import javax.xml.transform.stream.StreamSource;
> import org.apache.ws.commons.schema.*;
>
> public class XSDParser {
>
>     private InputStream is;
>     private XmlSchemaCollection schemaCol;
>     private XmlSchema schema;
>
>     public XSDParser(String fileName){
>         try {
>             is = new FileInputStream(fileName);
>             schemaCol = new XmlSchemaCollection();
>             schema = schemaCol.read(new StreamSource(is), null);
>         } catch (FileNotFoundException ex) {
>             ex.printStackTrace();
>         }
>     }
>
>     public void printSchema(){
>         schema.write(System.out);
>     }
>
>     public int getRootNode(){
>         //XmlSchemaObjectTable attribsObjTbl = schema.getAttributes();
>         XmlSchemaObjectTable elementsObjTbl = schema.getElements();
>
>         return elementsObjTbl.getCount();
>
>     }
>
> }
>
> And the following class:
>
> package schemaparser;
>
> public class XMLSchemaTest {
>
>     public static void main(String [] args) {
>
>         XSDParser xsdParser = new
> XSDParser("C:\\Users\\Patrick\\Documents\\college\\FYP\\xml\\note.xsd");
>
>          xsdParser.printSchema();
>
>         System.out.println(xsdParser.getRootNode());
>     }
>
> }
>
> And for some reason here it prints zero!
>
> On Fri, Apr 10, 2009 at 10:33 PM, Benson Margulies 
> <bimargul...@gmail.com>wrote:
>
>> Yes. GetResourceAsStream takes classpath names, not file system
>> pathnames. Stick with FileInputStream for those.
>>
>> More in a minute ...
>>
>>
>> On Fri, Apr 10, 2009 at 5:31 PM, Patrick Kiernan <hossb...@gmail.com>
>> wrote:
>> > Ok fair enough. How do you access the elements in the sequence? ie.
>> extract
>> > their names?
>> > I just tried your test case as a java class:
>> >
>> > package schemaparser;
>> >
>> > import java.io.InputStream;
>> >
>> > import javax.xml.transform.stream.StreamSource;
>> >
>> > import org.apache.ws.commons.schema.XmlSchema;
>> > import org.apache.ws.commons.schema.XmlSchemaCollection;
>> > import org.apache.ws.commons.schema.XmlSchemaObjectTable;
>> >
>> >
>> > public class XSDSchemaTest2  {
>> >
>> >       public static void main(String [] args){
>> >
>> >           try{
>> >               InputStream is =
>> >                       XSDSchemaTest2.class.
>> >
>> >
>> getClassLoader().getResourceAsStream("C:\\Users\\Patrick\\Documents\\college\\FYP\\xml\\note.xsd");
>> >               XmlSchemaCollection schemaCol = new XmlSchemaCollection();
>> >               XmlSchema schema = schemaCol.read(new StreamSource(is),
>> > null);
>> >               XmlSchemaObjectTable objectTable = schema.getElements();
>> >               System.out.println(objectTable.getCount());
>> >           } catch(Exception ex){
>> >               ex.printStackTrace();
>> >           }
>> >
>> >       }
>> > }
>> >
>> > When I try and run that I get the following error:
>> >
>> > org.apache.ws.commons.schema.XmlSchemaException
>> >        at
>> >
>> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:386)
>> >        at
>> >
>> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:422)
>> >        at
>> >
>> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:448)
>> >        at schemaparser.XSDSchemaTest2.main(XSDSchemaTest2.java:23)
>> >
>> > Any idea what's wrong there?
>> >
>> > Thanks,
>> > Patrick
>> >
>> > On Fri, Apr 10, 2009 at 10:26 PM, Benson Margulies <
>> bimargul...@gmail.com>wrote:
>> >
>> >> Oh! I completely misunderstood the question.
>> >>
>> >> Only top-level elements go into the collections. The elements inside a
>> >> sequence do not. So those elements are not supposed to be in items or
>> >> the elements object table. After all, you could have seven different
>> >> elements named 'to' inside of seven different complex types.
>> >>
>> >>
>> >>
>> >> On Fri, Apr 10, 2009 at 5:22 PM, Patrick Kiernan <hossb...@gmail.com>
>> >> wrote:
>> >> > Yes I just saw your commit and the file you uploaded is the full copy
>> of
>> >> > notes.xsd:
>> >> > +<?xml version="1.0"?>
>> >> > +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>> >> > +
>> >> > +<xs:element name="note">
>> >> > + <xs:complexType>
>> >> > +   <xs:sequence>
>> >> > +     <xs:element name="to" type="xs:string"/>
>> >> > +     <xs:element name="from" type="xs:string"/>
>> >> > +     <xs:element name="heading" type="xs:string"/>
>> >> > +     <xs:element name="body" type="xs:string"/>
>> >> > +   </xs:sequence>
>> >> > + </xs:complexType>
>> >> > +</xs:element>
>> >> > +
>> >> > +</xs:schema>
>> >> >
>> >> >
>> >> > On Fri, Apr 10, 2009 at 10:18 PM, Benson Margulies <
>> >> bimargul...@gmail.com>wrote:
>> >> >
>> >> >> I don't have a full copy of 'notes.xsd'. I just have the fragment
>> from
>> >> >> your first message. To give me a whole file, make a JIRA and attach
>> >> >> it. I just committed my unit test: grab the source tree from svn and
>> >> >> look at
>> >> >>
>> >> >> /XmlSchema/src/test/java/tests/SingleElementNoNamespace.java
>> >> >>
>> >> >> The svn path you want is
>> >> >>
>> >> >>
>> >> >>
>> >>
>> http://svn.apache.org/repos/asf/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Fri, Apr 10, 2009 at 5:12 PM, Patrick Kiernan <
>> hossb...@gmail.com>
>> >> >> wrote:
>> >> >> > JDK is 6
>> >> >> > Don't have anything special in my classpath:
>> >> >> > .;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;C:\program
>> >> >> > files\java\jdk1.6.0_10\lib
>> >> >> >
>> >> >> > I don't have maven so I can't make a self-contained failing case
>> using
>> >> >> > maven.
>> >> >> >
>> >> >> > Is one member not incorrect since note.xsd has 5 elements:
>> >> >> >
>> >> >> > note
>> >> >> > to
>> >> >> > from
>> >> >> > heading
>> >> >> > body
>> >> >> >
>> >> >> > Can you provide your code please?
>> >> >> >
>> >> >> > Thanks,
>> >> >> > Patrick
>> >> >> >
>> >> >> > On Fri, Apr 10, 2009 at 10:02 PM, Benson Margulies <
>> >> >> bimargul...@gmail.com>wrote:
>> >> >> >
>> >> >> >> I just turned your code into a unit test, and it worked. The
>> items
>> >> >> >> collection comes up with one member, as does the elements object
>> >> >> >> table.
>> >> >> >>
>> >> >> >> So, we have to look for some more interesting explanation. What
>> JDK?
>> >> >> >> Anything fancy in your class path, like a specific version of
>> Xerces
>> >> >> >> or some other alternative parser?
>> >> >> >>
>> >> >> >> Can you make a self-contained failing case using maven to specify
>> all
>> >> >> >> the dependencies?
>> >> >> >>
>> >> >> >> It is remotely possible that you've hit something fixed since
>> 1.4.4,
>> >> >> >> but very little has changed since then, and nothing in this
>> >> >> >> neighborhood.
>> >> >> >>
>> >> >> >>
>> >> >> >> On Fri, Apr 10, 2009 at 4:38 PM, Patrick Kiernan <
>> hossb...@gmail.com
>> >> >
>> >> >> >> wrote:
>> >> >> >> > I assumes that's:
>> >> >> >> >
>> >> >> >> > XmlSchemaObjectTable elementsObjTbl = schema.getElements();
>> >> >> >> > System.out.println(elementsObjTbl.getCount());
>> >> >> >> >
>> >> >> >> > That's also empty.
>> >> >> >> >
>> >> >> >> > On Fri, Apr 10, 2009 at 9:27 PM, Benson Margulies <
>> >> >> bimargul...@gmail.com
>> >> >> >> >wrote:
>> >> >> >> >
>> >> >> >> >> I would expect that code of yours to work. My only suggestion
>> >> before
>> >> >> I
>> >> >> >> >> debug is that you get the element collection and see if THAT
>> is
>> >> also
>> >> >> >> >> empty.
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> On Fri, Apr 10, 2009 at 2:50 PM, Patrick Kiernan <
>> >> hossb...@gmail.com
>> >> >> >
>> >> >> >> >> wrote:
>> >> >> >> >> > Cool, thanks :)
>> >> >> >> >> > Is it a bug or?
>> >> >> >> >> >
>> >> >> >> >> > Maybe you could include some code showing the common uses of
>> the
>> >> >> API.
>> >> >> >> >> >
>> >> >> >> >> > I basically want to be able to extract the elements of a
>> schema
>> >> and
>> >> >> >> then
>> >> >> >> >> > display it using a
>> >> >> >> >> > JTree.
>> >> >> >> >> >
>> >> >> >> >> > Patrick
>> >> >> >> >> >
>> >> >> >> >> > On Fri, Apr 10, 2009 at 7:24 PM, Benson Margulies <
>> >> >> >> bimargul...@gmail.com
>> >> >> >> >> >wrote:
>> >> >> >> >> >
>> >> >> >> >> >> I'm a bit buried under Passover, but I'll sort this out
>> over
>> >> the
>> >> >> >> >> >> weekend some time.
>> >> >> >> >> >>
>> >> >> >> >> >> On Fri, Apr 10, 2009 at 11:46 AM, Patrick Kiernan <
>> >> >> >> hossb...@gmail.com>
>> >> >> >> >> >> wrote:
>> >> >> >> >> >> > Version 1.4.4
>> >> >> >> >> >> >
>> >> >> >> >> >> > On Fri, Apr 10, 2009 at 1:55 PM, Benson Margulies <
>> >> >> >> >> bimargul...@gmail.com
>> >> >> >> >> >> >wrote:
>> >> >> >> >> >> >
>> >> >> >> >> >> >> You don't have a target namespace.... but that should be
>> OK.
>> >> >> What
>> >> >> >> >> >> >> version have you grabbed?
>> >> >> >> >> >> >>
>> >> >> >> >> >> >> On Fri, Apr 10, 2009 at 8:11 AM, Patrick Kiernan <
>> >> >> >> hossb...@gmail.com
>> >> >> >> >> >
>> >> >> >> >> >> >> wrote:
>> >> >> >> >> >> >> > Hi,
>> >> >> >> >> >> >> > Trying to start using the API. Following the
>> instructions
>> >> in
>> >> >> the
>> >> >> >> >> >> tutorial
>> >> >> >> >> >> >> I
>> >> >> >> >> >> >> > can get the schema to print fine.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > However now I would like to start accessing elements.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > I tried the following:
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > InputStream is = new FileInputStream("note.xsd");
>> >> >> >> >> >> >> > XmlSchemaCollection schemaCol = new
>> XmlSchemaCollection();
>> >> >> >> >> >> >> > XmlSchema schema = schemaCol.read(new
>> StreamSource(is),
>> >> >> null);
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > XmlSchemaObjectTable objectTable =
>> schema.getElements();
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > System.out.println(objectTable.getCount());
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > This prints out 0. Should it not print out the number
>> of
>> >> >> >> elements?
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > notes.xsd is as follows:
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > <?xml version="1.0"?>
>> >> >> >> >> >> >> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema
>> ">
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > <xs:element name="note">
>> >> >> >> >> >> >> >  <xs:complexType>
>> >> >> >> >> >> >> >    <xs:sequence>
>> >> >> >> >> >> >> >      <xs:element name="to" type="xs:string"/>
>> >> >> >> >> >> >> >      <xs:element name="from" type="xs:string"/>
>> >> >> >> >> >> >> >      <xs:element name="heading" type="xs:string"/>
>> >> >> >> >> >> >> >      <xs:element name="body" type="xs:string"/>
>> >> >> >> >> >> >> >    </xs:sequence>
>> >> >> >> >> >> >> >  </xs:complexType>
>> >> >> >> >> >> >> > </xs:element>
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > </xs:schema>
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Thanks,
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Patrick
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >>
>> >> >> >> >> >> >
>> >> >> >> >> >>
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >> >
>> >> >> >>
>> >> >> >
>> >> >>
>> >> >
>> >>
>> >
>>
>
>

Reply via email to