Missing xsd reference #53

Closed
lpouget opened this Issue Mar 17, 2013 · 3 comments

Projects

None yet

3 participants

@lpouget

If I use PHPParser_Serializer_XML to serialize AST in XML, XSD references link to http 404 pages.

<AST xmlns:node="http://nikic.github.com/PHPParser/XML/node" xmlns:subNode="http://nikic.github.com/PHPParser/XML/subNode" xmlns:attribute="http://nikic.github.com/PHPParser/XML/attribute" xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar">
    ...
</AST>

Could you update links to valide location ?

(PHPParser must be the old version of PHP-Parser :) )

@nikic
Owner

Is there some issue with them pointing to 404? Quite honestly, I know little and less about the monstrosities of XML, but I thought that the namespace is more or less just some unique string, but is not actually used in any way after that (so it doesn't matter if it is a 404).

@lpouget

I thought that the namespace is more or less just some unique string, but is not actually used in any way after
that (so it doesn't matter if it is a 404).

Not really. Xml namespaces are useful to describe node type and structure inside your xml. Xsd files (which describe your xml namespaces) can provide in some IDE (like eclipse) auto-completion to create xml. They can be used also to validate xml or to map to objects in various languages.

I generate them for php-parser but I want to validate them before submission.

@boenrobot

But a namespace URI is not the same thing as an XSD reference.

As @nikic pointed out, a namespace URI is just a unique string that doesn't need to point to an existing resource. Only an XSD reference needs to point to an actual resource (that resource being the XSD file).

Are there actually any XSD files for the XML serialization?

IF (and only if) there were ones, and we assume they're at those same URIs, but with an ".xsd" extension, you'd declare them like:

<AST
xmlns:node="http://nikic.github.com/PHPParser/XML/node"
xmlns:subNode="http://nikic.github.com/PHPParser/XML/subNode"
xmlns:attribute="http://nikic.github.com/PHPParser/XML/attribute"
xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:namespaceSchemaLocation="http://nikic.github.com/PHPParser/XML/node http://nikic.github.com/PHPParser/XML/node.xsd
http://nikic.github.com/PHPParser/XML/subNode http://nikic.github.com/PHPParser/XML/subNode.xsd
http://nikic.github.com/PHPParser/XML/attribute http://nikic.github.com/PHPParser/XML/attribute.xsd
http://nikic.github.com/PHPParser/XML/scalar http://nikic.github.com/PHPParser/XML/scalar.xsd">
...
</AST>

Some IDEs let you declare XSD files for namespaces, thus allowing you to omit the whole "xsi" business, but still - there needs to be an XSD file that's associated with a namespace URI - the namespace URI itself is NOT the schema.

@nikic nikic closed this May 24, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment