You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Sridhar Raman <sr...@gmail.com> on 2006/11/09 18:32:49 UTC

Problem with importing using Document View - why is xmlns needed again? and how do I import non well-formed xml?

I made my Document View, and did the importing, and assigned the references
programmatically. That works fine.

But I have another small problem - concerning namespaces.

This is the structure of the nodes:
CON
|---ENTS
     |---DIM

There can be many DIM nodes, and all should be under the main node of
/CON/ENTS. So I create an XML document in Document View format, that will be
imported.

The first time, I created a file in this style:
<ents ...>
  <dim/>
  <dim/>
  <dim/>
  <dim/>
</ents>

And I did the importXML("/con", ...) using this method call. It worked fine,
with just a small hitch. I had to define all the namespaces again as part of
the <ent> element. Else, the import kept throwing unrecognised prefix
exceptions. I did that and it worked.

Now I want to do a second set of import to this same workspace. And I
created the Document View in the same style as earlier. The import gives me
something like this.

/con/ent/dim/...
/con/ent/dim1/...
/con/ent/dim2/...
/con/ent/dim3/...
/con/ent/dim4/...
..[DATA from first import]
..
/con/ent2/dim/...
/con/ent2/dim1/...
/con/ent2/dim2/...
/con/ent2/dim3/...
..[DATA from second import]
..

What should be done to get the new list of <dim> nodes to go under the
earlier <ent>?

I tried this kind of Document View
<dim>
<dim1>
<dim2>
...
and importing using the call importXML("/con/ent/", ..)

This gives 2 problems:
1) it's not well formed
2) namespaces not found

What do I do?? Is there any solution to this?
I would be glad if you could help me with this.

Thanks in advance,
Sridhar

Re: Problem with importing using Document View - why is xmlns needed again? and how do I import non well-formed xml?

Posted by Stefan Guggisberg <st...@gmail.com>.
On 11/11/06, Sridhar Raman <sr...@gmail.com> wrote:
> This is the namespace declarations I am talking about.
>
> (sample Document View)
> <aa:ents jcr:primaryType="aa:Ents" xmlns:jcr="http://www.jcp.org/jcr/1.0"
> xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:mix="
> http://www.jcp.org/jcr/mix/1.0" xmlns:aa="http://aaa.com/test">
> <aa:ent jcr:primaryType="aa:EntityType" aa:title="AA_Magnolia">
> ...
> ...
> </aa:ent>
> ..
> ..
> </aa:ents>
>
> If I try to import this above XML without any any of the xmlns definitions
> under aa:ents, I get an exception saying "prefix aa mapping not found". But
> the thing is that the mappings are all present. If I try to add a mapping
> for aa programmatically, it gives an error saying "mapping already present".
>
> It's just that when the import happens, the mappings are "not seen" by the
> method, and I need to specify them explicitly again here...which I don't
> want to do.

the xml to be imported has to be 'valid', i.e. every namespace used within
the document needs to be declared in the document. i.e.

  <?xml version="1.0"?>
  <a:foo b:bar="blah"/>

is not a valid xml document.

for more details on xml namesapces please refer e.g. to
http://www.w3.org/TR/REC-xml-names/.

cheers
stefan

>
> That's the problem I am facing. Any suggestions?
>
> Thanks,
> Sridhar
>
> On 11/10/06, Stefan Guggisberg <st...@gmail.com> wrote:
> >
> > On 11/9/06, Sridhar Raman <sr...@gmail.com> wrote:
> > > I made my Document View, and did the importing, and assigned the
> > references
> > > programmatically. That works fine.
> > >
> > > But I have another small problem - concerning namespaces.
> > >
> > > This is the structure of the nodes:
> > > CON
> > > |---ENTS
> > >      |---DIM
> > >
> > > There can be many DIM nodes, and all should be under the main node of
> > > /CON/ENTS. So I create an XML document in Document View format, that
> > will be
> > > imported.
> > >
> > > The first time, I created a file in this style:
> > > <ents ...>
> > >   <dim/>
> > >   <dim/>
> > >   <dim/>
> > >   <dim/>
> > > </ents>
> > >
> > > And I did the importXML("/con", ...) using this method call. It worked
> > fine,
> > > with just a small hitch. I had to define all the namespaces again as
> > part of
> > > the <ent> element. Else, the import kept throwing unrecognised prefix
> > > exceptions. I did that and it worked.
> >
> > i don't see any namespaces being used in your example. what namespaces
> > are you talking of. can you provide a small sample xml file?
> >
> > >
> > > Now I want to do a second set of import to this same workspace. And I
> > > created the Document View in the same style as earlier. The import gives
> > me
> > > something like this.
> > >
> > > /con/ent/dim/...
> > > /con/ent/dim1/...
> > > /con/ent/dim2/...
> > > /con/ent/dim3/...
> > > /con/ent/dim4/...
> > > ..[DATA from first import]
> > > ..
> > > /con/ent2/dim/...
> > > /con/ent2/dim1/...
> > > /con/ent2/dim2/...
> > > /con/ent2/dim3/...
> > > ..[DATA from second import]
> > > ..
> > >
> > > What should be done to get the new list of <dim> nodes to go under the
> > > earlier <ent>?
> >
> > i don't think that this can be done by using the jcr importXML methods.
> > you'll either have to do it programmatically or write a custom SAX
> > ContentHandler.
> >
> > > I tried this kind of Document View
> > > <dim>
> > > <dim1>
> > > <dim2>
> > > ...
> > > and importing using the call importXML("/con/ent/", ..)
> > >
> > > This gives 2 problems:
> > > 1) it's not well formed
> > > 2) namespaces not found
> >
> > again, what namespaces are you talking of?
> >
> > cheers
> > stefan
> >
> > >
> > > What do I do?? Is there any solution to this?
> > > I would be glad if you could help me with this.
> > >
> > > Thanks in advance,
> > > Sridhar
> > >
> > >
> >
>
>

Re: Problem with importing using Document View - why is xmlns needed again? and how do I import non well-formed xml?

Posted by Sridhar Raman <sr...@gmail.com>.
This is the namespace declarations I am talking about.

(sample Document View)
<aa:ents jcr:primaryType="aa:Ents" xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:mix="
http://www.jcp.org/jcr/mix/1.0" xmlns:aa="http://aaa.com/test">
<aa:ent jcr:primaryType="aa:EntityType" aa:title="AA_Magnolia">
...
...
</aa:ent>
..
..
</aa:ents>

If I try to import this above XML without any any of the xmlns definitions
under aa:ents, I get an exception saying "prefix aa mapping not found". But
the thing is that the mappings are all present. If I try to add a mapping
for aa programmatically, it gives an error saying "mapping already present".

It's just that when the import happens, the mappings are "not seen" by the
method, and I need to specify them explicitly again here...which I don't
want to do.

That's the problem I am facing. Any suggestions?

Thanks,
Sridhar

On 11/10/06, Stefan Guggisberg <st...@gmail.com> wrote:
>
> On 11/9/06, Sridhar Raman <sr...@gmail.com> wrote:
> > I made my Document View, and did the importing, and assigned the
> references
> > programmatically. That works fine.
> >
> > But I have another small problem - concerning namespaces.
> >
> > This is the structure of the nodes:
> > CON
> > |---ENTS
> >      |---DIM
> >
> > There can be many DIM nodes, and all should be under the main node of
> > /CON/ENTS. So I create an XML document in Document View format, that
> will be
> > imported.
> >
> > The first time, I created a file in this style:
> > <ents ...>
> >   <dim/>
> >   <dim/>
> >   <dim/>
> >   <dim/>
> > </ents>
> >
> > And I did the importXML("/con", ...) using this method call. It worked
> fine,
> > with just a small hitch. I had to define all the namespaces again as
> part of
> > the <ent> element. Else, the import kept throwing unrecognised prefix
> > exceptions. I did that and it worked.
>
> i don't see any namespaces being used in your example. what namespaces
> are you talking of. can you provide a small sample xml file?
>
> >
> > Now I want to do a second set of import to this same workspace. And I
> > created the Document View in the same style as earlier. The import gives
> me
> > something like this.
> >
> > /con/ent/dim/...
> > /con/ent/dim1/...
> > /con/ent/dim2/...
> > /con/ent/dim3/...
> > /con/ent/dim4/...
> > ..[DATA from first import]
> > ..
> > /con/ent2/dim/...
> > /con/ent2/dim1/...
> > /con/ent2/dim2/...
> > /con/ent2/dim3/...
> > ..[DATA from second import]
> > ..
> >
> > What should be done to get the new list of <dim> nodes to go under the
> > earlier <ent>?
>
> i don't think that this can be done by using the jcr importXML methods.
> you'll either have to do it programmatically or write a custom SAX
> ContentHandler.
>
> > I tried this kind of Document View
> > <dim>
> > <dim1>
> > <dim2>
> > ...
> > and importing using the call importXML("/con/ent/", ..)
> >
> > This gives 2 problems:
> > 1) it's not well formed
> > 2) namespaces not found
>
> again, what namespaces are you talking of?
>
> cheers
> stefan
>
> >
> > What do I do?? Is there any solution to this?
> > I would be glad if you could help me with this.
> >
> > Thanks in advance,
> > Sridhar
> >
> >
>

Re: Problem with importing using Document View - why is xmlns needed again? and how do I import non well-formed xml?

Posted by Stefan Guggisberg <st...@gmail.com>.
On 11/9/06, Sridhar Raman <sr...@gmail.com> wrote:
> I made my Document View, and did the importing, and assigned the references
> programmatically. That works fine.
>
> But I have another small problem - concerning namespaces.
>
> This is the structure of the nodes:
> CON
> |---ENTS
>      |---DIM
>
> There can be many DIM nodes, and all should be under the main node of
> /CON/ENTS. So I create an XML document in Document View format, that will be
> imported.
>
> The first time, I created a file in this style:
> <ents ...>
>   <dim/>
>   <dim/>
>   <dim/>
>   <dim/>
> </ents>
>
> And I did the importXML("/con", ...) using this method call. It worked fine,
> with just a small hitch. I had to define all the namespaces again as part of
> the <ent> element. Else, the import kept throwing unrecognised prefix
> exceptions. I did that and it worked.

i don't see any namespaces being used in your example. what namespaces
are you talking of. can you provide a small sample xml file?

>
> Now I want to do a second set of import to this same workspace. And I
> created the Document View in the same style as earlier. The import gives me
> something like this.
>
> /con/ent/dim/...
> /con/ent/dim1/...
> /con/ent/dim2/...
> /con/ent/dim3/...
> /con/ent/dim4/...
> ..[DATA from first import]
> ..
> /con/ent2/dim/...
> /con/ent2/dim1/...
> /con/ent2/dim2/...
> /con/ent2/dim3/...
> ..[DATA from second import]
> ..
>
> What should be done to get the new list of <dim> nodes to go under the
> earlier <ent>?

i don't think that this can be done by using the jcr importXML methods.
you'll either have to do it programmatically or write a custom SAX
ContentHandler.

> I tried this kind of Document View
> <dim>
> <dim1>
> <dim2>
> ...
> and importing using the call importXML("/con/ent/", ..)
>
> This gives 2 problems:
> 1) it's not well formed
> 2) namespaces not found

again, what namespaces are you talking of?

cheers
stefan

>
> What do I do?? Is there any solution to this?
> I would be glad if you could help me with this.
>
> Thanks in advance,
> Sridhar
>
>