iOSのlibxmlは、この一見有効なXMLファイル(SVG仕様の一部です!)の解析を断固として拒否します。
http://www.w3.org/TR/SVG11/images/coords/PreserveAspectRatio.svg
それは文句を言う:
Error Domain=1 Code=27 "Entity 'Smile' not defined
UserInfo=0x7655730
{
lineNumber=26,
NSLocalizedDescription=Entity 'Smile' not defined,
bonusInfo1=Smile,
columnNumber=25
}
...そして各エンティティの警告レベルのエラーを返します。ドキュメントが示唆していることを強制する方法はないようです(デフォルトではエンティティを解析します)。ここ(http://www.xmlsoft.org/entities.html)には、非常に困難で誰も自分でやるべきではないという不思議な疑似説明があります...しかし、libxmlもそうは思われません:( 。
エンティティ解析にオーバーライドを提供していないことを確認するためのセットアップ構造体は次のとおりです。
static xmlSAXHandler SAXHandler = {
NULL, /* internalSubset */
NULL, /* isStandalone */
NULL, /* hasInternalSubset */
NULL, /* hasExternalSubset */
NULL, /* resolveEntity */
NULL, /* getEntity */
NULL, /* entityDecl */
NULL, /* notationDecl */
NULL, /* attributeDecl */
NULL, /* elementDecl */
NULL, /* unparsedEntityDecl */
NULL, /* setDocumentLocator */
NULL, /* startDocument */
NULL, /* endDocument */
NULL, /* startElement*/
NULL, /* endElement */
NULL, /* reference */
charactersFoundSAX, /* characters */
NULL, /* ignorableWhitespace */
NULL, /* processingInstruction */
NULL, /* comment */
NULL, /* warning */
errorEncounteredSAX, /* error */
NULL, /* fatalError //: unused error() get all the errors */
NULL, /* getParameterEntity */
cDataFoundSAX, /* cdataBlock */
NULL, /* externalSubset */
XML_SAX2_MAGIC,
NULL,
startElementSAX, /* startElementNs */
endElementSAX, /* endElementNs */
structuredError, /* serror */
};