Re: [Servingxml-help] Content is notallowed in prolog?
Brought to you by:
danielaparker
From: Daniel P. <dan...@sy...> - 2006-02-04 03:42:29
|
Akhil, "Content is not allowed in prolog" is a parser error message, that's = complaining about the beginning of the received message, namely <?xml = version=3D"1.0" encoding=3D"utf-8"?>. Try printing out the hex values = of the first few bytes of the message and make sure there's no = character, space, or junk text before the <?. Also, messages in utf-8 encoding can contain three leading bytes, EF BB = BF,called a BOM, and there is a known bug with versions of Java before = 1.5, Java didn't handle BOMs on UTF-8 documents properly, see = http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=3D4508058. So check = if your message contains a BOM. Try using Java 1.5 if you're not = already doing so, and see if that helps. =20 Regards, Daniel Parker ----- Original Message -----=20 From: Akhil S. Srinivasan=20 To: Daniel Parker=20 Cc: ser...@li...=20 Sent: Friday, February 03, 2006 3:16 AM Subject: RE: [Servingxml-help] Content is notallowed in prolog? I tried as you have suggested but have run up against the same = problem. =20 Receiving message NMR(content) org.apache.servicemix.jbi.jaxp.BytesSource@90ed81 NMR(content) <?xml version=3D"1.0" encoding=3D"utf-8"?><ord:orders = xmlns:ord=3D"http:/ /mastek.com/demos/servicemixtest/orders" = xmlns:xsi=3D"http://www.w3.org/2001/XMLSc hema-instance" = xsi:schemaLocation=3D"order-record.xsd"><ord:order><ord:ordertype>B = </ord:ordertype><ord:companyticker>AMZN</ord:companyticker><ord:companyna= me>Amaz on = Inc</ord:companyname><ord:quantity>10.0</ord:quantity></ord:order></ord:o= rder s> sending to client-sender sent to client-sender =20 [Fatal Error] :1:1: Content is not allowed in prolog. com.servingxml.util.ServingXmlException: Content is not allowed in = prolog. at = com.servingxml.components.xmlpipeline.Pipeline.execute(Pipeline.java: 94) at = com.servingxml.components.inverserecordmapping.XmlRecordReader.readRe cords(XmlRecordReader.java:93) at = com.servingxml.components.recordio.RecordPipeline.execute(RecordPipel ine.java:69) at = com.servingxml.components.recordio.ProcessRecordsAppender.execute(Pro cessRecordsAppender.java:81) at = com.servingxml.components.service.ServiceImpl.execute(ServiceImpl.jav a:66) at = com.mastek.servicemix.ServingXmlTransformer.toResult(ServingXmlTransf ormer.java:130) at = com.mastek.servicemix.TextSourceMarshaler.asString(TextSourceMarshale r.java:28) at = org.apache.servicemix.components.jms.JmsMarshaler.messageAsString(Jms Marshaler.java:91) at = org.apache.servicemix.components.jms.JmsMarshaler.createMessage(JmsMa rshaler.java:68) at = org.apache.servicemix.components.jms.JmsSenderComponent$1.createMessa ge(JmsSenderComponent.java:72) =20 I am posing my entire resource file in. I hope it helps =20 <?xml version=3D"1.0"?> =20 <sx:resources xmlns:sx=3D"http://www.servingxml.com/core" = xmlns:msv=3D"http://www.servingxml.com/extensions/msv" = xmlns:ord=3D"http://mastek.com/demos/servicemixtest/orders"> =20 <sx:parameter name=3D"validate"> <sx:defaultValue>no</sx:defaultValue> </sx:parameter> =20 <sx:service id=3D"orderstoxml"> <sx:serialize> <sx:transform> <sx:content ref=3D"orders"/>=20 </sx:transform> </sx:serialize> </sx:service> =20 <sx:recordContent id=3D"orders"> <sx:flatFileReader> <!-- Is not needed, it does the transform then on anything given <sx:stringSource /> <sx:urlSource url=3D"orders.csv"/>=20 --> <sx:flatFile ref=3D"ordersFlatFile"/> <!-- causes error for some reason <msv:msvRecordFilter schema=3D"order-record.xsd"/> --> </sx:flatFileReader> <sx:recordMapping ref=3D"ordersToXmlMapping"/> </sx:recordContent> =20 <sx:flatFile id=3D"ordersFlatFile"> <sx:commentSymbol value=3D"#"/> <sx:flatFileBody> <sx:flatRecordType id=3D"order"> <sx:fieldDelimiter value=3D","/> <sx:delimitedField name=3D"ordertype-field" = label=3D"OrderType"/> <sx:delimitedField name=3D"companyticker-field" = label=3D"CompanyTicker"/> <sx:delimitedField name=3D"companyname-field" = label=3D"CompanyName"/> <sx:delimitedField name=3D"quantity-field" = label=3D"Quantity"/> </sx:flatRecordType> </sx:flatFileBody> </sx:flatFile> =20 =20 <sx:recordMapping id=3D"ordersToXmlMapping"> <ord:orders = xmlns:ord=3D"http://mastek.com/demos/servicemixtest/orders" = xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=3D"order-record.xsd">=20 <sx:onRecord> <ord:order> <sx:fieldElementMap field=3D"ordertype-field" = element=3D"ord:ordertype"/> =20 <sx:fieldElementMap field=3D"companyticker-field" = element=3D"ord:companyticker"/> =20 <sx:fieldElementMap field=3D"companyname-field" = element=3D"ord:companyname"/> =20 <sx:fieldElementMap field=3D"quantity-field" = element=3D"ord:quantity"/> =20 </ord:order> =20 </sx:onRecord> </ord:orders> </sx:recordMapping>=20 =20 <sx:service id=3D"orderstocsv" name=3D"orderstocsv"> <sx:writeRecords> <sx:flatFileWriter> <sx:flatFile ref=3D"ordersFlatFile"/> </sx:flatFileWriter> <sx:xmlRecordReader> <sx:inverseRecordMapping ref=3D"ordersToCSVMapping"/> <sx:transform> <sx:document/> </sx:transform> </sx:xmlRecordReader> </sx:writeRecords> =20 </sx:service> =20 =20 <sx:inverseRecordMapping id=3D"ordersToCSVMapping"> <sx:documentFragmentMap path=3D"/ord:orders/ord:order"> <sx:fragmentRecordMap recordType=3D"order"> <sx:fragmentFieldMap select=3D"ord:ordertype" = field=3D"ordertype"/> <sx:fragmentFieldMap select=3D"ord:companyticker" = field=3D"companyticker"/> <sx:fragmentFieldMap select=3D"ord:companyname" = field=3D"companyname"/> <sx:fragmentFieldMap select=3D"ord:quantity" = field=3D"quantity"/> </sx:fragmentRecordMap> </sx:documentFragmentMap> </sx:inverseRecordMapping> =20 </sx:resources> =20 And while I am at it my schema definition =20 <xsd:schema xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema" = xmlns:ord=3D"http://mastek.com/demos/servicemixtest/orders" = targetNamespace=3D"http://mastek.com/demos/servicemixtest/orders" elementFormDefault=3D"unqualified" attributeFormDefault=3D"unqualified"> =20 <xsd:annotation> <xsd:documentation xml:lang=3D"en"> Order Sent record schema=20 </xsd:documentation> </xsd:annotation> =20 <xsd:element name=3D"orders" type=3D"ord:OrderRecords"/> =20 <xsd:complexType name=3D"OrderRecords"> <xsd:sequence> <xsd:element name=3D"order" type=3D"ord:OrderRecord" = minOccurs=3D"0" maxOccurs=3D"unbounded"/> </xsd:sequence> </xsd:complexType> =20 <!-- This element's name matches the value of the name attribute in = the px:flatFileRecordType element. --> <xsd:complexType name=3D"OrderRecord"> <xsd:sequence> <xsd:element name=3D"ordertype" type=3D"ord:OrderType"/> <xsd:element name=3D"companyticker" type=3D"ord:CompanyTicker"/> <xsd:element name=3D"companyname" type=3D"xsd:string"/> <xsd:element name=3D"quantity" type=3D"xsd:integer"/> =20 </xsd:sequence> </xsd:complexType> =20 <xsd:simpleType name=3D"OrderType"> <xsd:restriction base=3D"xsd:string"> <xsd:length value=3D"1" fixed=3D"true"/> </xsd:restriction> </xsd:simpleType> =20 <xsd:simpleType name=3D"CompanyTicker"> <xsd:restriction base=3D"xsd:string"> <xsd:length value=3D"4" fixed=3D"true"/> </xsd:restriction> </xsd:simpleType> =20 </xsd:schema> =20 Akhil Srinivasan MASTEK=20 "Making a valuable difference" Mastek in NASSCOM's 'India Top 20' Software Service Exporters = List. In the US, we're called MAJESCOMASTEK = ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Opinions expressed in this e-mail are those of the individual = and not that of Mastek Limited, unless specifically indicated to that = effect. Mastek Limited does not accept any responsibility or liability = for it. This e-mail and attachments (if any) transmitted with it are = confidential and/or privileged and solely for the use of the intended = person or entity to which it is addressed. Any review, re-transmission, = dissemination or other use of or taking of any action in reliance upon = this information by persons or entities other than the intended = recipient is prohibited. This e-mail and its attachments have been = scanned for the presence of computer viruses. It is the responsibility = of the recipient to run the virus check on e-mails and attachments = before opening them. If you have received this e-mail in error, kindly = delete this e-mail from all computers. = ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 |