Author |
Message
|
paustin_ours |
Posted: Wed Jun 24, 2020 4:49 am Post subject: esql namespaces xmlnsc |
|
|
Yatiri
Joined: 19 May 2004 Posts: 667 Location: columbus,oh
|
I know this topic has been discussed in the past and I have tried multiple suggestions from infocenter and posts here but not able to get it to work
I am trying to create an xml messages out of my compute node like below
Quote: |
<?xml version="1.0" encoding="UTF-8"?>
<request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="4.00"
xsi:noNamespaceSchemaLocation="FileTransfer.xsd">
<managedTransfer>
<originator>
<hostName>example.com.</hostName>
<userID>mqm</userID>
</originator>
<sourceAgent QMgr="QM_JUPITER" agent="AGENT_JUPITER"/>
<destinationAgent QMgr="QM_JUPITER" agent="AGENT_JUPITER"/>
<transferSet>
<item checksumMethod="MD5" mode="binary">
<source disposition="leave" recursive="false">
<file>/etc/passwd</file>
</source>
<destination exist="overwrite" type="directory">
<file>/tmp</file>
</destination>
</item>
</transferSet>
</managedTransfer>
</request>
|
I am currently at this esql after trying many things
Code: |
CREATE FIRSTCHILD OF OutputRoot.XMLNSC TYPE XMLNSC.XmlDeclaration NAME 'XmlDeclaration';
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = '1.0';
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = 'UTF-8';
--DECLARE xmlns NAMESPACE 'http://www.w3.org/2001/XMLSchema-instance';
--DECLARE xsi NAMESPACE 'FileTransfer.xsd';
DECLARE space1 NAMESPACE 'http://www.w3.org/2001/XMLSchema-instance';
DECLARE xsi NAMESPACE '';
SET OutputRoot.XMLNSC.space1:request.(XMLNSC.NamespaceDecl)xmlns:"xsi" = 'http://www.w3.org/2001/XMLSchema-instance';
SET OutputRoot.XMLNSC.space1:request.(XMLNSC.Attribute)version = '4.00';
SET OutputRoot.XMLNSC.space1:request.(XMLNSC.NamespaceDecl)xsi:noNamespaceSchemaLocation = 'FileTransfer.xsd';
--SET OutputRoot.XMLNSC.xsi.request.(XMLNSC.Attribute)noNamespaceSchemaLocation = 'FileTransfer.xsd';
SET OutputRoot.XMLNSC.space1:request.space1:managedTransfer.space1:originator.space1:hostName = 'example.com';
SET OutputRoot.XMLNSC.space1:request.space1:managedTransfer.space1:originator.space1:userID = 'mqm';
|
this is generating an xml like this
Quote: |
<?xml version="1.0" encoding="UTF-8"?>
<xsi:request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.00" noNamespaceSchemaLocation="FileTransfer.xsd">
<xsi:managedTransfer>
<xsi:originator>
<xsi:hostName>example.com</xsi:hostName>
<xsi:userID>mqm</xsi:userID>
</xsi:originator>
</xsi:managedTransfer>
</xsi:request>
|
how to I get rid of the xsi prefix tht show up in each xml tag
also not sure how to get the xsi:noNamespaceSchemalocation
please shed some light. thanks. |
|
Back to top |
|
|
Vitor |
Posted: Wed Jun 24, 2020 5:11 am Post subject: Re: esql namespaces xmlnsc |
|
|
Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
paustin_ours wrote: |
how to I get rid of the xsi prefix tht show up in each xml tag |
Don't add them to the xsi namespace (which you're explicitly doing in your code)
paustin_ours wrote: |
also not sure how to get the xsi:noNamespaceSchemalocation |
Aside from the one you've got in your posted output, syntactically identical to your desired output?
paustin_ours wrote: |
please shed some light. |
Don't copy and paste random suggestions from the Infocenter. Take a breath and think about what your code is doing. Look at the required XML and see which tags are where.
If it helps, try putting the MFT tags explicitly in the correct namespace. Remember that all the prefixes do is indicate to the XML parser which namespace a given tag belongs to, so 2 documents where one allows tags to default and another explicitly defines a namespace for each tag are syntactically identical.
Even if they don't look the same to a human reader. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
|
paustin_ours |
Posted: Wed Jun 24, 2020 5:25 am Post subject: |
|
|
Yatiri
Joined: 19 May 2004 Posts: 667 Location: columbus,oh
|
if I remove the reference to xsi name space
SET OutputRoot.XMLNSC.space1:request.(XMLNSC.NamespaceDecl)xmlns = 'http://www.w3.org/2001/XMLSchema-instance';
my output shows like this
Quote: |
<?xml version="1.0" encoding="UTF-8"?>
<request xmlns="http://www.w3.org/2001/XMLSchema-instance" version="4.00" xmlns:noNamespaceSchemaLocation="FileTransfer.xsd">
<managedTransfer>
<originator>
<hostName>example.com</hostName>
<userID>mqm</userID>
</originator>
</managedTransfer>
</request> |
but this is not what I want though. |
|
Back to top |
|
|
Vitor |
Posted: Wed Jun 24, 2020 7:27 am Post subject: |
|
|
Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
paustin_ours wrote: |
this is not what I want though. |
So code it how you want it.
I stand by my previous advice; think about what you want, then code for that. Do not add or remove lines randomly in the hopes of hitting the magic combination that makes the XML look like the example you're trying to match.
I also repeat my comments about 2 non-identical XML documents being syntactically equivalent. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
|
timber |
Posted: Thu Jun 25, 2020 1:00 am Post subject: |
|
|
Grand Master
Joined: 25 Aug 2015 Posts: 1290
|
Vitor is 100% correct. You have probably convinced yourself that XML namespaces are difficult. But you are a programmer, and you have learned a lot more difficult things than XML namespaces.
I strongly encourage you to slay this dragon and lose your fear of the subject area. Do a few experiments, or take a w3schools course on XML namespaces. It's really not hard. |
|
Back to top |
|
|
|