XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
- Stylus Studio Technical Forum (14621)
-> + Maximum XML File Size and Out ... (4)
-> + 64-bit version of Stylus Studi... (2)
-> + Generate xml schema from edi s... (3)
-> + License disabled (6)
-> + Stylus is not recognizing save... (5)
-> + WINE / CrossOver (3)
-> + Problem with FOP plugin (SS200... (5)
-> - XML diff engine - how to ignor... (1)
-> + How to configure Xerces J (2)
-> + Configuring xerces-2_9_1 (4)
-> + Release license to use stylus ... (5)
-> + Sorting Repeater row (3)
-> - Browse for Pipeline Input (1)
-> + Stylus 2010 and Win 7 problem ... (6)
-> + Cannot set XSLT source files w... (3)
-> - Simple TXT to HTML Convertor! ... (1)
-> + Invoking XSLT and FOP Processe... (2)
-> - Add Node and Pattern for Mutlp... (1)
-> - How to get xsl:message output ... (1)
-> + WSDL for Cvent Web Service (5)
-> - newbie question: IS there a "f... (1)
-> + Windows 7 64-bit Java. Stylus ... (3)
-> + Stylus Studio Enterprise crash... (2)
-> - XML to Access or SQL? Newbie N... (1)
-> - xml to flat file mapping using... (1)
-> + Missing Document Wizards (2)
-> - XSLT mapping and (1)
-> + Citrix Softgrid package proble... (2)
-> - xsl:import dropping the attrib... (1)
-> + XSLT mapping between schemas (5)
-> + Modifying/Creating existing CA... (9)
-> - Creating XML Sample Stream fro... (1)
-> - Integer to hex (1)
-> - Opening from and then Saving t... (1)
-> - Please help me find time query... (1)
-> + Need access to the 2007 versio... (2)
-> + Connecting to a iSeries DB2 da... (2)
-> + Windows 7 Enterprise and Stylu... (5)
-> + How do you create a record inc... (2)
-> + How to convert lines with no i... (6)
-> + http://www.milyn.org/schema/ed... (3)
-> + Using source configuration fil... (2)
-> + Is there any way that we could... (3)
-> - Water mark problem in PDF Gene... (1)
-> + Conversion file for swift mt10... (4)
-> + Stylus Studio converter error (7)
-> + Help for upgrade (6)
-> + Conversion File for a Header D... (2)
-> + Java Heap Space (9)
-> - Export mappings as text (1)
-> + XQuery, Pipeline generated jav... (2)
-> + Conditional XML Conversion? (2)
-> + iDoc to EDI (2)
-> + Pipeline XSLT Java Problem (6)
-> - Created XSLT... Now what? (1)
-> - Can I have Or Condition in the... (1)
-> - Error??? during a pipeline! (1)
-> + Opening from and then Saving t... (6)
-> + Unable to start SS 2010 ES - R... (2)
-> + proxy server settings (2)
-> - post upgrade failures and a fr... (1)
-> + Error java heap space (2)
-> + XML to XML? (4)
-> + Base64 - Encoding icone with T... (2)
-> - Pipeline: Multiple plain data ... (1)
-> + Convert and XML file to 837P (4)
-> + How to use a pipeline output i... (3)
-> + Web Service Call - SSL error (5)
-> + JVM settings cannot be edited ... (3)
-> + I am opening an xsl file SSE c... (2)
-> + Xml To Database mappings (2)
-> + Java pipeline (3)
-> + create dtd from schema (2)
-> + One file in, two files out (9)
-> + XMLConverter Licence (2)
-> + hide diagram pane (3)
-> + Getting error " xsl:template i... (2)
-> + How to reduce top margin in ev... (4)
-> + Can I do this with Stylus? (4)
-> + How to remove tabs in generati... (2)
-> + Maintain Support for Stylus St... (3)
-> + How to trim field to 2 decimal... (2)
-> + Recursively update node value ... (2)
-> + Compressed content in CADATA (4)
-> + Error in Converter when readin... (2)
-> + XML parser no longer working p... (5)
-> + Application failed to start (6)
-> + Web Service Call tester (14)
-> + temp directory writing issue (3)
-> + not able to set namespace defe... (2)
-> + Unable to open UBL in XSLT Map... (8)
-> - Compatability with Windows 7 (1)
-> + Stylus Studio 10 activation fa... (5)
-> + Way to bundle up a project? (3)
-> + Type could not be found (7)
-> + Not able to import the copy bo... (2)
-> + Stylus Studio 10 does not vali... (3)
-> + How to merge table cells using... (2)
-> + Collapsible Groups (2)
-> + Apply-template problem (2)
-- Previous [601-620] [621-640] [641-660] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
DG SarboSubject: converter EDI --> typ = no
Author: DG Sarbo
Date: 10 Aug 2009 07:01 AM
Originally Posted: 10 Aug 2009 06:51 AM
Please take a look at the xquery in sample1.

In the EDI message (sample1.edi) there is a line MEA+AAE+G+KGM:16920'
here I want to be sure that the '16920' is an instance of decimal. So I check this in the mapping (see xquery sample1.xquery take scenario 1).

This does not work. I first assumed that because the converter makes a stringtype out of the '16920', it is impossible to check if the value is an instance of decimal.

However, if I change '16920' to e.g. 'string' (see sample2.edi) the same xquery (see sample1.xquery but now with scenario 2) throws an error:

Error during conversion: [DDEE0012] ERROR Invalid character in numeric value string (often caused by incorrect decimal character).

This is how it should be! SS checks the EDIFACT D95B CODECO, sees that the type of
Segment: MEA (line 18)
Position: MEA0302
Element: C174:6314
Measurement value Value: "string" ... is not numeric.

But the error message SS gives is very hard to read for the untrained eye (workers in our helpdesk also see this error message). We want to have a nicer message (in plain English) and further down in the error message SS makes a suggestion:

To turn off all data type validation, use the "typ=no" URI option.

I add the typ=no option in my xquery (see scenario 3) and now something happens that I do not understand. There is no error but also no output... The whole <xlEquipmentGrossWeight> is gone from the output.

What did happen?


Unknownsample1.xquery
the xquery

Unknownsample2.edi
sample 2

Unknownsample1.edi
sample 1

Postnext
Tony LavinioSubject: converter EDI --> typ = no
Author: Tony Lavinio
Date: 11 Aug 2009 05:57 PM
First, the issue is not with typ=no, but in your query. The query
line:
where $MEA/MEA02/MEA0201/text() = 'G'
should be
where $MEA/MEA02/text() = 'G'

But there is a more subtle problem in your XQuery.

saying "$lmnt instance of xs:decimal" depends on the declared type of
the element based on XML Schema, not based on whether the string value
of the element looks like a number.

So without an XML schema defined, "instance of" will not do what you
expect. If you want to test if an untyped element looks like a number,
use this:

string(number($lmnt)) != 'NaN'

In any case, this should not be needed. The XML Converters already
have builtin code to check for all sorts of conditions, including
whether a specific element has the correct characters for that
datatype and minimum and maximum lengths.

One issue your code does not test is the proper way of handling
lengths for numeric values. For example, the '-' sign is not counted
as part of the length, ".5" and "5." are illegal values, etc. The
converter handles all of these issues, but you are for some reason
disabling those checks and handling them manually.

Possibly a better method would be to intercept the errors via a
EDIConverterListener Java class, and reporting your own errors. This
would let the converters handle their validation as designed, and
would save you duplicating much effort.

Postnext
DG SarboSubject: converter EDI --> typ = no
Author: DG Sarbo
Date: 12 Aug 2009 04:18 AM
Originally Posted: 12 Aug 2009 03:52 AM
Sorry but I think you are wrong about:

>$MEA/MEA02/MEA0201/text() =
>'G'
>should be
>where $MEA/MEA02/text() = 'G'

The D95B EDIFACT message has a MEA segment in GROUP_3. The MEA/MEA02 is a 'C502' composite element that holds composites: 6313, 6321, 6155 and 6154. Beacuse the 'G' is in the first composite (in 6313), in the EDI message (see e.g. sample 1) the line: MEA+AAE+G+KGM:string' should be seens as MEA+AAE+:G+KGM:string' (notice the ':' before G).

*****
Thank you for the help, I will try this!


Also could you please look at my initial question about the typ=no?

In scenario1 I use: "converter:EDI?file://C:.....\sample1.edi"

In scenario3 I use: "converter:EDI:typ=no?file://C:.....\sample2.edi"

In scenario1, it executes the local:checkField function but I don't know what happens in scenario3.

Postnext
Tony LavinioSubject: converter EDI --> typ = no
Author: Tony Lavinio
Date: 12 Aug 2009 04:16 AM
>Sorry but I think you are wrong about:
> $MEA/MEA02/MEA0201/text() = 'G'
> should be
> $MEA/MEA02/text() = 'G'

No, I am not wrong, based on the sample1.edi and sample2.edi
that you posted earlier. Neither has a +:G+, but both have just
+G+.

Perhaps the real definition uses +:G+, but that's not the sample
you posted, and that's why your sample didn't work.

For the rest, after fixing either your input file or your XQuery
to handle the +G+ issue, please re-read the comments above.

Your code to do "instance of decimal" will not do what you think.

Postnext
DG SarboSubject: converter EDI --> typ = no
Author: DG Sarbo
Date: 12 Aug 2009 04:40 AM
>No, I am not wrong, based on
>the sample1.edi and
>sample2.edi
>that you posted earlier.
>Neither has a +:G+, but both
>have just
>+G+.

Yes you are wrong... I know for a FACT that it MUST be MEA/MEA02/MEA0201
Just open the D95B EDIFACT standard... see that it has a composite element and look inside it to see that the 'G' is in 'MEA0201'.

It is impossible to have a composite element (like MEA02) with a string/AN value (like 'G').

If you think this:

>Perhaps the real definition
>uses +:G+, but that's not the
>sample
>you posted, and that's why
>your sample didn't work.

Than you did not try my xquery in SS. If you change the code like you suggested the 'G' will not be found and the code would not reach the part where the local:checkField function is.

On the other hand if you do it like I wrote the code, than the function is reached (as you can try for yourself), executed and the error message that is in it, is displayed by SS (in the error message the value of MEA/MEA03/MEA0302 is displayed, this could not happen if my code was wrong!!!)

EDIFACT works like this:

if there is a composite element and a value from the first composite (like I said: 6313) holds 'G' than there is no need to use '+:' in a EDIFACT message. That is why I said: "it can be seen as"

If the 'G' would be in the 2nd/ 3d of 4th composit (in: 6321, 6155 or 6154) than the ':' would be used.

Please just try running the xquery before stating something that is not true.

Postnext
Jordy BakkerSubject: converter EDI --> typ = no
Author: Jordy Bakker
Date: 12 Aug 2009 05:07 AM
A value can never be found in a composite.
It should always be in an element or a composite element.

MEA/MEA01 is element 6311, which can contain a value.
MEA/MEA02 is composite C502, which cannot contain a value itself.
Only its composite elements C502/6313, C502/6321, C502/6155 and C502/6154 can contain a value.

The elements and composites are divided by a +
The composite elements are divided by a :

Since C502/6313 is the first composite element of composite C502, it should not be preceded by a :

MEA+AAE+G+KGM:1000' is a segment which has the following values:
'MEA' is the segment (MEA)
'AAE' is in element 6311 (MEA/MEA01)
'G' is in composite element C502/6313 (MEA/MEA02/MEA0201)
'KGM' is in composite element C174/6411 (MEA/MEA03/MEA0301)
'1000' is in composite element C174/6314 (MEA/MEA03/MEA0302)

Postnext
Tony LavinioSubject: converter EDI --> typ = no
Author: Tony Lavinio
Date: 12 Aug 2009 10:41 AM
Originally Posted: 12 Aug 2009 10:30 AM
Ah! You have discovered a problem.

I was looking just at the XML output.

It appears that when typ=no, we can't distinguish in the input from
content being in a 01 vs. a 0101 position.

This is a bug, and will be fixed for the 5.0 release.

But the other pieces about "instance of xs:decimal" are still
correct.

That particular bug has been in the product for several years.
The reason it was never encountered is that in general our other
users never turn off type checking.

Posttop
DG SarboSubject: converter EDI --> typ = no
Author: DG Sarbo
Date: 12 Aug 2009 12:06 PM
Ok, I wait on it for release 5.0

The code you have given to solve the "instance of xs:decimal" problem is very helpful. Thank you for that.

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.