|
Hi,
As you said we cannot use 'ref' attribute in xsd without using some level of xml namespace.
Can we write a schema file (xsd) to valid the xml without having xmlns?
Is there any other alternative to valid the xml without having xmlns?
I mean, can we write xsd to valid the following xml?
<?xml version="1.0" encoding="utf-8"?>
<Roles>
<Role>
<Permissions>
<Permission>Reader</Permission>
</Permissions>
</Role>
<Permissions>
<Permission>Reader</Permission>
</Permissions>
</Roles>
Thanks.
Prakash
|
|
|
|
|
a) what's the hassle with using XML namespaces? Really isn't that much trouble.
b) You can use something like this without namespaces. The references have effectively been manually resolved:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Roles">
<xs:complexType>
<xs:sequence>
<xs:element name ="Role">
<xs:complexType>
<xs:sequence>
<xs:element name ="Permissions">
<xs:complexType>
<xs:sequence>
<xs:element name ="Permission" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
a) The XML file I am validating is from my clients. They cannot bear any change modification on that xml because it is being used by many others clients. They already working on the format of that xml. If I add an xml namespace in the XML file, all of my clients have to change their logic to read the modified XML file. What I can do is to write the xsd file to validate that XML file. It wouldn't have been problem if I could use namespace.
I think your answer (b) will work for me.
Thank your great help.
Prakash
|
|
|
|
|
tprakash wrote: The XML file I am validating is from my clients. They cannot bear any change modification on that xml because it is being used by many others clients
That I can understand. I presume your clients don't have a schema for their XML? In which case, what guarantees do you have that their XML will always match any schema you write? And how did they specify the XML format to you?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Actually, we have two applications, one generates the xml, while other application consume the xml. The format of xml is defined by my management team. We have different clients using that applications(single only or both). And it is our management team decision not to change the format of the xml file. We just donot want to mesh up with that now. Otherwise, it is ok.
|
|
|
|
|
I think the solution (b) works perfectly in cases where we have normal xml node. What about if the a child xml node contains parent xml node recursively?
Taken the above case, what if Permissions node in turn contains the Roles ?
Since we cannot use ref attribute, how to refer the Roles node in the above xsd?
Thanks
Prakash
|
|
|
|
|
As I said in this message[^], I think I was wrong about not being able to use ref attributes. I'm not sure what was going on in my head that day
This schema validates your XML with libxml2 2.7.3 (which is a pretty recent release). I've put in the maxOccurs attribute of the sequence that contains the Permission element to enable multiple Permission elements in a Permissions element.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Roles">
<xs:complexType>
<xs:sequence>
<xs:element ref ="Role"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="Role">
<xs:complexType>
<xs:sequence>
<xs:element ref="Permissions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="Permissions">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name ="Permission" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Finally, I could create the desired xsd to valid the xml.
I truly appreciate your great help.
Thanks a lot.
Prakash
|
|
|
|
|
|
lostinxsl wrote: It would be great it someone could guide me.
There are tutorials all over the Web for beginners. You can use google to find them with like
Javascript tutorial
There are some at www.w3schools.com
|
|
|
|
|
|
lostinxsl wrote: I cant figure out this :
a XSL generates a javascript function.
Ok, that part is done then and has nothing to do with:
lostinxsl wrote: This javascript functions is used in html .
how can i do this ?
Again, if you don't understand how to use javascript in a browser then you need to be studying more beginner material on that subject until you do understand.
Also:
lostinxsl wrote: I am only able to display the javascript function on a webpage
Javascript that is correctly added to HTML will not be displayed in the browser. So again, you need to know how to write HTML/Javascript before you try to generate it with anything else like XSLT.
|
|
|
|
|
If I execute the following xslt I get the result given below.
I'm no mathematician but 100 times 2500.01 does not equal 250001.00000000003
I can find very little about this on the web and no suggested fixes or
solutions.
This is causing me a big problem as my entire architecture hangs around xslt.
Using VS2008 and have IE8 installed.
Can anyone help? Please?
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<res>
<xsl:value-of select="2500.01 * 100"/>
</res>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="utf-8"?>
<res>250001.00000000003</res>
|
|
|
|
|
Not strictly an XSLT problem - it's more that IEEE754 floating-point isn't completely accurate, especially with things like .1 or .01, as they are irrational when expressed in binary.
For example - I just tried your example with both Python[^] and ghci[^] (a Haskell[^] REPL), and they gave the same answer as you got.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
On another forum (I know naughty) I got this response:
Well XPath 1.0 uses double floating point numbers like JavaScript or
Java do too and with these there is limited precision, in particular
when there is no finite binary representation of a number.
With XSLT 1.0 you can use format-number to ensure you get a certain
number of decimal positions. Or you need to change to XPath 2.0 (as
implemented by Saxon 9) and use xs:decimal numbers instead of double
numbers.
--
Martin Honnen --- MVP XML
http://msmvps.com/blogs/martin_honnen/
Thanks Martin
|
|
|
|
|
contactowen wrote: On another forum (I know naughty)
Indeed - consider your CP membership revoked!!!
contactowen wrote: With XSLT 1.0 you can use format-number to ensure you get a certain number of decimal positions.
Quite true - I wasn't aware of that function until you mentioned it
contactowen wrote: Or you need to change to XPath 2.0 (as
implemented by Saxon 9) and use xs:decimal numbers instead of double numbers.
Also true (in the commercial version of Saxon, anyway - I don't think the free one supports XML Schema datatypes) - I presumed that you would be using MSXML, in which case XPath 2.0 and XSLT 2.0 aren't really an option.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
can any one please help me out to insert the another image in the form of base64
inside the aatribute
<>
I have a xml format like above and I want to inset the image in place of existing image .
Please help
|
|
|
|
|
Firstly you need to convert your image to base64 - I'll presume you know how to do this.
To insert the new value, you need to navigate to the relevant element using the XML DOM[^] API. Then (presuming you're using Microsoft's MSXML) you would use the IXMLDOMElement::setAttribute[^] method with a name of "image" and the value set to the base64 encoded image string.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi
I am writing a code generation app using xslt.
My purpose is to check if any two nodes of the same parent node, have the same attribute value.
If so I want to append a number sequence in the ouput code, so that there is no duplication.
For example
-------------
if xml file is like
<code>
<methods>
<method name="first">
<method name="first">
<method name="second">
<method name="third">
</methods></code>
I want the output to be
-------------
void first1() {}
void first2() {}
void second() {}
void third() {}
Note: there is no number sequence attached to function name if it is not duplicated.
How to write XSLT to achieve this?
Thank you
Fadi
|
|
|
|
|
You want to use the 'preceding-sibling' and 'following-sibling' axes, like this:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="//methods/method"/>
</xsl:template>
<xsl:template match="method">
<!-- index is set to an empty value if the current name is unique in
the current set of 'method' elements, or to the index of the
current method in the set of methods with the same name if the
name isn't unique -->
<xsl:variable name="index"><xsl:if test="count(preceding-sibling::*[@name=current()/@name]) + count(following-sibling::*[@name=current()/@name])>0"><xsl:value-of select="1+count(preceding-sibling::*[@name=current()/@name])"/></xsl:if></xsl:variable>
void <xsl:value-of select="concat(@name, $index)"/>() {}
</xsl:template>
</xsl:stylesheet>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
modified on Monday, June 15, 2009 2:14 PM
|
|
|
|
|
Thank you very much Stuart.. It really worked... Hats off to u
|
|
|
|
|
Hi,
When trying to use insertbefore() method to insert a node from an xml file to other Xml file the node is getting deleted from the old Xml file...
Please help me regarding the same..
|
|
|
|
|
You need to import the node, XmlNode XmlDocument.ImportNode(XmlNode, bool) , first.
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
All,
I am some what new to C# and XML as well.
I am having one interesting query,
I am having one XML based file one (first.xml). it ios having the Element\Attrbute like
((<text id="textID" Font="Roman" Style="Regular"> Sample </text>))
Other XML file (second.xml) is having the data like
((<PersonalInfo>
<First Name> Raja </FirstName>
</PersonalInfo>))
I simple want to replace Sample in File1.xml with Raja from File2.xml
Can this be possible and achiveable.
Please help this is somewhat very urgent. PLease try to give full code not just idea. Since I am having the logic bit not able to implement.
THanks,
|
|
|
|
|
Hi Guys, wondering if you can help me again,
I need to write a stylesheet for a xml document, i need to convert it to a html table with a header, i can get the header working and get the table created but i can't get the xml put within the table.
the code is below do you any ideas, i thought this was quite a simple task but its turns out harder than i thought.
xml sample - there is more to the code but this is a example, with the report is the title and other info but that is not relevent as the arguments fields is what i need to put into a table
<report-item-definition>
<arguments>
<argument>
<name>xVar</name>
<type>Column</type>
<default>@IPRED</default>
<display-name>X Axis Variable</display-name>
<description>X Axis Variable</description>
<visible>FALSE</visible>
<filter-type>@ALL</filter-type>
</argument>
<argument>
</report-item-definition>
The table show look like the following
Name - Type - Default - Display Name - Description - Visible - Filter Type
At the moment my style sheet looks like this - but it does not seem to be working
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match ="/">
<html>
<head>
<title>XML Stylesheet</title>
</head>
<body>
<h1 align="center"><b><xsl:value-of
select="report-item-definition/item-title" /></b></h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="report-item-definition/arguments">
<table width="700" border="1" align="center" style="font-family:verdana
font-size:10pt">
<tr bgcolor = "#cccccc">
<td width="130" align="center"><b>Name</b></td>
<td align="center"><b>Type</b></td>
<td align="center"><b>Default</b></td>
<td align="center"><b>Display Name</b></td>
<td align="center"><b>Description</b></td>
<td align="center"><b>Visible</b></td>
<td align="center"><b>Filter Type</b></td>
</tr>
<xsl:for-each select="arguments/argument">
<tr>
<td><xsl:value-of select="name" /></td>
<!--<td><xsl:value-of select="type" /></td>
<td><xsl:value-of select="default" /></td>
<td><xsl:value-of select="display-name" /></td>
<td><xsl:value-of select="descriptions" /></td>
<td><xsl:value-of select="visible" /></td>
<td><xsl:value-of select="filter-type" /></td>-->
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
|
|
|
|