|
I tried that but it did not work and I tried <patient_employment> and I tried <patientemployment> and I still got an error.
|
|
|
|
|
And did you take a good look at the line below that as well?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Yes I did. But I still did not find any solutions to the error.
|
|
|
|
|
And what did you see?
I'll give you a clue:
<employer <information>Orlando Home Team</employer>
What is that? Does it look well formed to you?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
no, that does not look correct. This is how I wrote the code
<employerinformation>Orlando Home Team></employerinfomation>
|
|
|
|
|
And that doesn't look right either...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
To this point I do not know what I am doing wrong. could you just please point out what I am doing wrong and how to fix it. I have been working on this for three days and I still could not figure it out.
|
|
|
|
|
Well, you could try:
="1.0"="utf-8"
<root>
<registration_form>
<name>Digestive and Endoscopy Medical Office MD</name>
<register>patient information</register>
<patient>Arijit Singh</patient>
<status>Single</status>
<birthdate>10/20/1987</birthdate>
<age>27</age>
<address>6216 GreatWater Dr, Windermer, FL 34786</address>
<home>(407)-987-2525</home>
<cell>(407)-288-9331</cell>
</registration_form>
<patient_employment>
<employer_information>Orlando Home Team</employer_information>
<occupation>Real Estate Agent</occupation>
<address>1300 e Michigan St, Orlando, FL 32812</address>
<employer>(407)-885-3539</employer>
<patient_employment>
<Insurance_Information>
<subscriber>Arijit Singh</subscriber>
<subscribers_SS>789-53-3407</subscribers_SS>
<group>DC2630</group>
<co-payment>$50</co-payment>
</Insurance_Information>
<In_Case_of_Emergency>
<name>Zina Kaur</name>
<relationship>fiancee</relationship>
<authorization>Arijit Singh</authorization>
</In_Case_of_Emergency>
</root>
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Thank you so much, I will try it and see if it will work.
|
|
|
|
|
I tried it, but it did not validate it.
|
|
|
|
|
What are you using to validate it?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I am using a website called xmlvalidation.com
|
|
|
|
|
This passes for me:
="1.0"="utf-8"
<root>
<registration_form>
<name>Digestive and Endoscopy Medical Office MD</name>
<register>patient information</register>
<patient>Arijit Singh</patient>
<status>Single</status>
<birthdate>10/20/1987</birthdate>
<age>27</age>
<address>6216 GreatWater Dr, Windermer, FL 34786</address>
<home>(407)-987-2525</home>
<cell>(407)-288-9331</cell>
</registration_form>
<patient_employment>
<employer_information>Orlando Home Team</employer_information>
<occupation>Real Estate Agent</occupation>
<address>1300 e Michigan St, Orlando, FL 32812</address>
<employer>(407)-885-3539</employer>
</patient_employment>
<Insurance_Information>
<subscriber>Arijit Singh</subscriber>
<subscribers_SS>789-53-3407</subscribers_SS>
<group>DC2630</group>
<co-payment>$50</co-payment>
</Insurance_Information>
<In_Case_of_Emergency>
<name>Zina Kaur</name>
<relationship>fiancee</relationship>
<authorization>Arijit Singh</authorization>
</In_Case_of_Emergency>
</root>
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Thank you, thank you, thank you so very very much. It finally worked. Oh my gosh I have been stressing out with this code for so many days. I am very grateful that you took the time out to help me in every way possible.
|
|
|
|
|
You're welcome!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I want to create an XSD schema that describes this XML:
<report>
<head showpagenumer="true">
<line left="10" top="100" width="200" />
<image left="10" top="100" path="logotype.jpg" />
<text size="16" value="This is the header" />
</head>
<body leftmargin="20">
<line left="50" top="200" width="200" />
<image left="15" top="300" path="diagram.jpg" />
<text size="12" value="Here is the diagram" />
</body>
<foot showdate="true">
<line left="10" top="600" width="200" />
<image left="10" top="650" path="signature.jpg" />
<text size="12" value="This is the footer" />
</foot>
</report>
Note the following:
- I dont want to repeat the line, image and text descriptions three times in the XSD, since they will always be se same format in the head, body and foot nodes.
- As you can see, the allowed attributes in the head, body and foot nodes are different
Is it possible to create an XSD like this?
|
|
|
|
|
I guess you can do something like this:
First create your own type.
<xs:complexType name="contentType">
<xs:sequence>
<xs:element name="line">
<xs:complexType>
<xs:attribute name="left" type="xs:int" use="required" />
<xs:attribute name="top" type="xs:int" use="required" />
<xs:attribute name="width" type="xs:int" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="image">
<xs:complexType>
<xs:attribute name="left" type="xs:int" use="required" />
<xs:attribute name="top" type="xs:int" use="required" />
<xs:attribute name="path" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="text">
<xs:complexType>
<xs:attribute name="size" type="xs:int" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
Then use it for your elements, head, body and foot
<xs:element name="head">
<xs:complexType>
<xs:sequence>
<xs:element name="content" type="contentType" />
</xs:sequence>
<xs:attribute name="showpagenumer" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
|
|
|
|
|
By the way, Visual Studio (version 2015, but perhaps also others) can do that job for you:
open the xml file in the editor, and then click on the "Create Schema" icon in the toolbar.
|
|
|
|
|
Hello,
I am trying to generate a unique value for a set of elements and place an <id> element in each of the elements. They must have the same id but only the elements enclosed in an element like <envelope>. So my XML Document looks like:
<noticeProduction type="c" revision="2015-11-10">
<prologue type="c">
<institutionId>22</institutionId>
<institutionName>Test INC</institutionName>
<databaseName>testdb</databaseName>
<terminology option="S">Savings and Checking</terminology>
<impoundTerminology option="E">Escrow</impoundTerminology>
<productionDate>2016-21-03</productionDate>
<productionTime>2016-21-15 23:52:33 EDT</productionTime>
<reportTitle>Maturity Notice Production</reportTitle>
<currentCutoffNoticeProductionSerial>1345</currentCutoffNoticeProductionSerial>
<priorCutoffNoticeProductionSerial>345</priorCutoffNoticeProductionSerial>
</prologue>
<envelope type="a">
<person type="a">
<serial>5432</serial>
<personLinkCategory option="PR">Primary owner</personLinkCategory>
<firstName>Lynn</firstName>
<lastName>Tanner</lastName>
<contact type="a">
<serial>5677</serial>
<category option="BP">Business phone</category>
<value>(111)111-1111</value>
</contact>
<contact type="a">
<serial>2456</serial>
<category option="PE">Personal email</category>
<value>kkkkkkkkk@eirco423.net</value>
</contact>
<contact type="a">
<serial>1135</serial>
<category option="HP">Home phone</category>
<value>(111)111-1111</value>
</contact>
</person>
<person type="a">
<serial>5805</serial>
<personLinkCategory option="JT">Joint owner</personLinkCategory>
<firstName>Ultra</firstName>
<lastName>Tanner</lastName>
</person>
<address type="c">
<serial>2456</serial>
<addressSerial>4070</addressSerial>
<category option="R">Residence</category>
<street>43 Times Ping Two Rail Lane</street>
<city>Thomas Co Commons Oreland</city>
</address>
<notice type="a">
<serial>1587</serial>
<category option="F">Force pay</category>
<account type="c">
<serial>4358</serial>
<accountNumber>0000000000</accountNumber>
<eStatementOption option="E">E-statement only</eStatementOption>
<eStatementEmailAddress>tay3456fgee@eircom.net</eStatementEmailAddress>
<share type="c">
<serial>35688</serial>
<id>0004</id>
<description>Checking</description>
<typeSerial>6</typeSerial>
<typeDescription>Checking</typeDescription>
</share>
</account>
<transactionSerial>98432123</transactionSerial>
<monetarySerial>34563221</monetarySerial>
<postingDate>2016-21-02</postingDate>
<effectiveDate>2016-21-02</effectiveDate>
<effectiveBalance>19.72</effectiveBalance>
<effectiveBalanceResult>-1260.28</effectiveBalanceResult>
<availableBalance>19.72</availableBalance>
<availableBalanceResult>-1260.28</availableBalanceResult>
<feePostAmount>30.00</feePostAmount>
<feeDescription>Overdraft Fee</feeDescription>
<item type="a">
<serial>2378</serial>
<postingItemSerial>6532</postingItemSerial>
<category option="W">Withdrawal</category>
<source option="a">ACH</source>
<description>BANK OF AMERICA</description>
<amount>1250.00</amount>
</item>
</notice>
</envelope>
<envelope type="a">
<person type="a">
<serial>25258</serial>
<personLinkCategory option="PR">Primary owner</personLinkCategory>
<firstName>Jamie</firstName>
<middleName>M</middleName>
<lastName>Daniels</lastName>
<contact type="a">
<serial>38439</serial>
<category option="BP">Business phone</category>
<value>(610)789-0190</value>
</contact>
<contact type="a">
<serial>38440</serial>
<category option="PE">Personal email</category>
<value>hgkyfyfy@YMAIL.COM</value>
</contact>
</person>
<notice type="a">
<serial>1218</serial>
<category option="F">Force pay</category>
<account type="c">
<serial>20003</serial>
<accountNumber>0000000000</accountNumber>
<share type="c">
<serial>42452</serial>
<id>0004</id>
<description>Checking</description>
<typeSerial>6</typeSerial>
<typeDescription>Checking</typeDescription>
</share>
</account>
<transactionSerial>77313790</transactionSerial>
<monetarySerial>27773576</monetarySerial>
<postingDate>2016-03-02</postingDate>
<effectiveDate>2016-03-02</effectiveDate>
<effectiveBalanceResult>-60.00</effectiveBalanceResult>
<availableBalanceResult>-60.00</availableBalanceResult>
<feePostAmount>30.00</feePostAmount>
<feeDescription>Overdraft Fee</feeDescription>
<item type="a">
<serial>845</serial>
<postingItemSerial>5418</postingItemSerial>
<category option="W">Withdrawal</category>
<source option="a">ACH</source>
<description>USAA CHK-INTLOIORNT</description>
<amount>30.00</amount>
</item>
</notice>
<notice type="a">
<serial>1743</serial>
<category option="F">Force pay</category>
<account type="c">
<serial>20003</serial>
<accountNumber>0000000000</accountNumber>
<share type="c">
<serial>42452</serial>
<id>0000</id>
<description>Checking</description>
<typeSerial>6</typeSerial>
<typeDescription>Checking</typeDescription>
</share>
</account>
<transactionSerial>77768043</transactionSerial>
<monetarySerial>77767950</monetarySerial>
<postingDate>2016-03-02</postingDate>
<effectiveDate>2016-03-02</effectiveDate>
<effectiveBalance>-60.00</effectiveBalance>
<effectiveBalanceResult>-220.00</effectiveBalanceResult>
<availableBalance>-60.00</availableBalance>
<availableBalanceResult>-220.00</availableBalanceResult>
<feePostAmount>30.00</feePostAmount>
<feeDescription>Overdraft Fee</feeDescription>
<item type="a">
<serial>1370</serial>
<postingItemSerial>7439</postingItemSerial>
<category option="W">Withdrawal</category>
<source option="a">ACH</source>
<description>USAA CHK-KJHHUU</description>
<amount>130.00</amount>
</item>
</notice>
</envelope>
<epilogue type="c">
<envelopeCount>825</envelopeCount>
<noticeCount>1478</noticeCount>
</epilogue>
</noticeProduction>
And XLST File looks like:
="1.0"="utf-8"
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="text() | comment() | processing-instruction()">
<xsl:copy/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="envelope">
<xsl:copy>
<id>
<xsl:value-of select="generate-id(.)"/>
</id>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="person">
<xsl:copy>
<id>
<xsl:value-of select="envelope/id"/>
</id>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="contact">
<xsl:copy>
<id>
<xsl:value-of select="generate-id(.)"/>
</id>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="address">
<xsl:copy>
<id>
<xsl:value-of select="generate-id(.)"/>
</id>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="notice">
<xsl:copy>
<id>
<xsl:value-of select="generate-id(.)"/>
</id>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
So I am trying to generate a unique id for envelope and take that value and copy the id to the <person>, <contact>, <notice> and tags. The id must be the same for the envelope and the tags that are enclosed in the envelope. ANy ideas?
|
|
|
|
|
Some thoughts as not sure what you are working with: Just use the ID of the parent element and don't bother to assign children ID's. If you are doing a LINQ query and target the parent element with the ID you are looking for your "result" will be the element along with its children which will have the "same ID" whether it is physically assigned or not. I also would guess that you are somehow programmatically creating the XML, adding to it occasionally or subtracting to update it. So, when you create a new element to add to your XML, include all children ID attributes at the time of creation. Hope that helps.
<sig notetoself="think of a better signature">
<first>Jim</first> <last>Meadors</last>
</sig>
|
|
|
|
|
What I want to do is import this into Access and query the tables. The problem is Access is picky about it and makes a table for everything so I need to be able to match the records. I have no control over creating the xml document but it is generated by a system.
modified 28-Mar-16 11:01am.
|
|
|
|
|
OK, I'm guessing from that - you are not a developer? 2 ideas: Try importing into Excel. I've been able to work with XML files successfully there. Then you should be able to tweak it there. Easiest way would be to install Visual Studio latest free version and write a short query.
P.S. The following code will do pretty much what you are saying in a Visual Basic Console Application:
Dim myXMLFileLocation As String = ""
Dim myXmlFile As XElement = XElement.Load(myXMLFileLocation)
For Each ele In myXmlFile.Elements
For Each child In ele.Descendants
child.SetAttributeValue("type", ele.@type)
Next
Next
Console.WriteLine(myXmlFile.ToString)
Console.ReadLine()
myXmlFile.Save(myXMLFileLocation)
<sig notetoself="think of a better signature">
<first>Jim</first> <last>Meadors</last>
</sig>
modified 29-Mar-16 2:10am.
|
|
|
|
|
Thank you Jim for your help but I think I solved the problem. I am a programmer and believe me I would have had this done in C# or VB sprinkle in some LINQ in less than an hour if I had my way. Loading it into Excel does work and is a valid solution, I just wanted to try to solve it with XSLT. I also need to automate this for everyday mail merges so Access is a nice easy solution for the company I work for. So below is my code:
="1.0"="utf-8"
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<dataroot>
<xsl:apply-templates select="@*|node()"/>
</dataroot>
</xsl:template>
<xsl:template match="envelope">
<xsl:copy>
<xsl:element name="id">
<xsl:value-of select="generate-id(.)"/>
</xsl:element>
<xsl:apply-templates select="@*|node()">
<xsl:with-param name="prev_id" select="generate-id()"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="person">
<xsl:param name="prev_id"/>
<xsl:copy>
<xsl:variable name="cur_id">
<xsl:value-of select="$prev_id"/>/>
</xsl:variable>
<xsl:element name="id"><xsl:value-of select="$cur_id"/></xsl:element>
<xsl:apply-templates select="@*|node()">
<xsl:with-param name="prev_id" select="$cur_id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="contact">
<xsl:param name="prev_id"/>
<xsl:copy>
<xsl:variable name="cur_id">
<xsl:value-of select="$prev_id"/>/>
</xsl:variable>
<xsl:element name="id"><xsl:value-of select="$cur_id"/></xsl:element>
<xsl:apply-templates select="@*|node()">
<xsl:with-param name="prev_id" select="$cur_id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="address">
<xsl:param name="prev_id"/>
<xsl:copy>
<xsl:variable name="cur_id">
<xsl:value-of select="$prev_id"/>/>
</xsl:variable>
<xsl:element name="id"><xsl:value-of select="$cur_id"/></xsl:element>
<xsl:apply-templates select="@*|node()">
<xsl:with-param name="prev_id" select="$cur_id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="notice">
<xsl:param name="prev_id"/>
<xsl:copy>
<xsl:variable name="cur_id">
<xsl:value-of select="$prev_id"/>/>
</xsl:variable>
<xsl:element name="id"><xsl:value-of select="$cur_id"/></xsl:element>
<xsl:apply-templates select="@*|node()">
<xsl:with-param name="prev_id" select="$cur_id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
|
|
|
|
|
Good on solving it. I didn't realize you were trying to solve it with XSLT I didn't look as I thought it would be a "display" stylesheet...
<sig notetoself="think of a better signature">
<first>Jim</first> <last>Meadors</last>
</sig>
|
|
|
|
|
2. Document Content is determined by
a) Stylistic Markup c) Structural Markup
b) Semantic Markup
|
|
|
|