NSError *err=nil;
NSString *xmlPath= @"/path/to/xhtml_svg.xml";
NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:xmlPath]
options:(NSXMLDocumentValidate)
error:&err];
if (err) {
NSLog(@"ERROR:\t%@", err);
if (!xmlDoc) return 1;
}
NSLog(@"%@", [xmlDoc XMLString]);
xhtml_svg.xml<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
schemaLocation=
"http://www.w3.org/1999/xhtml xhtml.xsd
http://www.w3.org/2000/svg svg.xsd">
<head><title/></head>
<body>
<h1>XHTML にインラインで埋め込まれた SVG</h1>
<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="200px">
<circle cx="150" cy="100" r="50" fill="#ff0000"/>
</svg>
</body>
</html>
NVDL的なValidateなのかしら?これで通ったw.
と思ったら
<svg xmlns="http://www.w3.org/2000/xsvg" width="300px" height="200px">
とか
<svg xmlns="http://www.w3.org/2000/svg" xwidth="300px" height="200px">
とか
<svg xmlns="http://www.w3.org/2000/svg" xwidth="300xpx" height="200px">
とかERRORにならない.
(javaならERRORとなる.)
さすがに要素名はわかるみたい.
<xsvg xmlns="http://www.w3.org/2000/svg" xwidth="300xpx" height="200px">
結果:ERROR: Error Domain=NSXMLParserErrorDomain Code=76 UserInfo=0x11aa60 "Line 10: Opening and ending tag mismatch: xsvg line 0 and svg
Line 10: Opening and ending tag mismatch: xsvg line 0 and svg
ちなみに
xhtml_svg.xml - 2<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
schemaLocation=
"http://www.w3.org/1999/xhtml xhtml_svg.xsd">
<head><title/></head>
<body>
<h1>XHTML にインラインで埋め込まれた SVG</h1>
<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="200px">
<circle cx="150" cy="100" r="50" fill="#ff0000"/>
</svg>
</body>
</html>
としても通るけど,やっぱり上のERROR対象はみつけられない.
ということでこのValidateはおおまかにしか利用しない方が良いのかしら.(まったく役に立たないわけではない).
.xsdファイルは以前のエントリ(1, 2)を参照してください.
問題等ございましたらコメントいただければ幸いです.
0 件のコメント:
コメントを投稿