From: John K. - K. I. NL <jk...@in...> - 2006-11-06 10:35:55
|
In the new code this actually has nothing to do with "&s;" - there is no such check, my guess it's a typo of the website. It does have to do something with offsets: For the package I built, add a ++ after offset in getChar() (in the function getCharResolved()) Example, it was this: static Long getCharResolved(VTDNav *vn,int offset){ exception e; int ch =3D 0; int val =3D 0; Long inc =3D2; Long l =3D getChar(vn,offset); Change it to: static Long getCharResolved(VTDNav *vn,int offset){ exception e; int ch =3D 0; int val =3D 0; Long inc =3D2; Long l =3D getChar(vn,offset++); I'm not sure if this'll work on older versions. In a new version I threw in a bunch of typecasts too, to get rid of those pesky compiler warnings (on HP-UX a killer), but I'll release the package somewhat later when I'm convinced it works. Regards, John Kraal Harrie Hoogeveen wrote: > Hello, >=20 > I had a question about the built-in entity references. You support, as > told on the website only a few: >=20 > " &s; ' > < >=20 > Q1: I was wondering why is it not & and &apo; as in the standard? >=20 > For example a lot of parsers do not understand &s; but do understand > & >=20 > =20 >=20 > Now, I have to adapt my xml, or the VTD code. I am looking at this > function getCharResolved() from VTDNav. >=20 > If you look at the swich, after the & sign, it detects this: >=20 > =20 >=20 > *case* 'a' : >=20 > ch =3D getCharUnit(offset); >=20 > *if* (ch =3D=3D 'm') { >=20 > *if* (getCharUnit(offset + 1) =3D=3D 'p' >=20 > && getCharUnit(offset + 2) =3D=3D '= ;') { >=20 > inc =3D 5; >=20 > val =3D '&'; >=20 > } *else* >=20 > *throw* *new* NavException("illegal > builtin reference"); >=20 > } *else* *if* (ch =3D=3D 'p') { >=20 > *if* (getCharUnit(offset + 1) =3D=3D 'o' >=20 > && getCharUnit(offset + 2) =3D=3D '= s' >=20 > && getCharUnit(offset + 3) =3D=3D '= ;') { >=20 > inc =3D 6; >=20 > val =3D '\''; >=20 > } *else* >=20 > *throw* *new* NavException("illegal > builtin reference"); >=20 > } *else* >=20 > *throw* *new* NavException("illegal > builtin reference"); >=20 > *break*; >=20 > =20 >=20 > Which in translation is amp; and apos; >=20 > =20 >=20 > Now it realy is getting confusing. >=20 > If a put &s; in my xml, it throws an exception any way: > =E2=80=9Cjavax.ejb.EJBException: com.ximpleware.EntityException: Errors= in > Entity: Illegal builtin reference=E2=80=9D on line 499 in VTDGen. >=20 > If I put & in my xml I get a: =E2=80=9CNavException: Invalid entity= char=E2=80=9D on > line 830 in VTDNav. >=20 > Of which you can see the code above, which should work for &. >=20 > Also the & is supported in VTDNav, if I see correct on line 740, bu= t > also gets a exception >=20 > What is going on? >=20 > Mabey it=E2=80=99s in this piece of code on line 729 in VTDNav: >=20 > =20 >=20 > ch =3D (*int*)l; >=20 > =20 >=20 > *if* (ch !=3D '&') >=20 > *return* l; >=20 > =20 >=20 > I have some time to correct this. What is the problem? Why did you bloc= k > it out like that? >=20 > =20 >=20 > Harrie Hoogeveen >=20 > =20 >=20 > =20 >=20 >=20 > -----------------------------------------------------------------------= - >=20 > -----------------------------------------------------------------------= -- > Using Tomcat but need to do more? Need to support web services, securit= y? > Get stuff done quickly with pre-integrated technology to make your job = easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geron= imo > http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat= =3D121642 >=20 >=20 > -----------------------------------------------------------------------= - >=20 > _______________________________________________ > Vtd-xml-users mailing list > Vtd...@li... > https://lists.sourceforge.net/lists/listinfo/vtd-xml-users --=20 Met vriendelijke groeten, With kind regards, John Kraal Programmer Kewill Interchain A member of the Kewill Group of companies (T) +31 (0)78 6 123 310 (E) jk...@in... (W) www.interchain.nl IMPORTANT NOTICE: This e-mail, and each of any attachments transmitted with it, is confidential, is the property of Kewill Interchain, and is intended solely for the information of the individual/entity to whom this e-mail is addressed. It may also be privileged or protected by other legal rules. If you have received it by mistake, please notify the author immediately by replying to this e-mail and then destroy/delete this e-mail and all attachments (if any). If you are not the intended recipient you must not use, disclose, distribute, copy, print, or rely on this e-mail. In accordance with Kewill Interchain's internal policy e-mails sent and/or received may be monitored. Whilst Kewill Interchain takes reasonable precautions (including use of anti-virus software) it accepts no responsibility for any loss or damage should this e-mail contain any virus, or similar destructive or mischievous code. (c) Kewill Interchain 2006. |