diff options
| author | ivost <ivost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-03-21 11:06:07 +0000 |
|---|---|---|
| committer | ivost <ivost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-03-21 11:06:07 +0000 |
| commit | f0d31a663a8d8273cf2cc91b1760de26155c8cbf (patch) | |
| tree | b33a5f62dc27c044124008ae08af857d33337d75 /packages/libxml | |
| parent | 01c181e6964064395da4f1b6276f1a3eac147416 (diff) | |
| download | fpc-f0d31a663a8d8273cf2cc91b1760de26155c8cbf.tar.gz | |
* added namespace testing function
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@12936 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/libxml')
| -rw-r--r-- | packages/libxml/src/xmlxsd.pas | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/packages/libxml/src/xmlxsd.pas b/packages/libxml/src/xmlxsd.pas index aef0eb3281..1d15a1b383 100644 --- a/packages/libxml/src/xmlxsd.pas +++ b/packages/libxml/src/xmlxsd.pas @@ -174,6 +174,7 @@ const NS_EXCLUDE : xmlCharPtr = pointer(-1); { Node query functions } +function xsdTestNodeNs(node: xmlNodePtr; nameSpace: xmlCharPtr): Boolean; function xsdTestNode(node: xmlNodePtr; name, nameSpace: xmlCharPtr): Boolean; function xsdTryGetChild(node: xmlNodePtr; name, nameSpace: xmlCharPtr; Index: Integer = 0): xmlNodePtr; @@ -272,6 +273,7 @@ procedure xsdNextUnsignedLong(var node: xmlNodePtr; name, nameSpace: xmlCharPtr; procedure xsdNextEnum(var node: xmlNodePtr; name, nameSpace: xmlCharPtr; enum: array of String; out Value: Integer); { Property query functions } +function xsdTestPropNs(attr: xmlAttrPtr; nameSpace: xmlCharPtr): Boolean; function xsdTestProp(attr: xmlAttrPtr; name, nameSpace: xmlCharPtr): Boolean; function xsdTryGetProp(node: xmlNodePtr; name, nameSpace: xmlCharPtr): xmlAttrPtr; @@ -1405,11 +1407,17 @@ begin Result := xmlNewNsProp(node, ns, name, BAD_CAST(Tmp)); end; -function xsdTestNode(node: xmlNodePtr; name, nameSpace: xmlCharPtr): Boolean; +function xsdTestNodeNs(node: xmlNodePtr; nameSpace: xmlCharPtr): Boolean; begin - Result := (node <> nil) and (xmlStrEqual(name, node^.name) <> 0) and ((nameSpace = NS_IGNORE) or + Result := + (nameSpace = NS_IGNORE) or ((nameSpace = NS_EXCLUDE) and (node^.ns = nil)) or - ((nameSpace <> NS_EXCLUDE) and (nameSpace <> NS_IGNORE) and (node^.ns <> nil) and (xmlStrEqual(nameSpace, node^.ns^.href) <> 0))); + ((nameSpace <> NS_EXCLUDE) and (nameSpace <> NS_IGNORE) and (node^.ns <> nil) and (xmlStrEqual(nameSpace, node^.ns^.href) <> 0)); +end; + +function xsdTestNode(node: xmlNodePtr; name, nameSpace: xmlCharPtr): Boolean; +begin + Result := (node <> nil) and (xmlStrEqual(name, node^.name) <> 0) and xsdTestNodeNs(node, nameSpace); end; function xsdTryGetChild(node: xmlNodePtr; name, nameSpace: xmlCharPtr; Index: integer): xmlNodePtr; @@ -1890,11 +1898,17 @@ begin xsdParseEnum(xsdNextChars(node, name, nameSpace), enum, Value); end; -function xsdTestProp(attr: xmlAttrPtr; name, nameSpace: xmlCharPtr): Boolean; +function xsdTestPropNs(attr: xmlAttrPtr; nameSpace: xmlCharPtr): Boolean; begin - Result := (attr <> nil) and (xmlStrEqual(name, attr^.name) <> 0) and ((nameSpace = NS_IGNORE) or + Result := + (nameSpace = NS_IGNORE) or ((nameSpace = NS_EXCLUDE) and (attr^.ns = nil)) or - ((nameSpace <> NS_EXCLUDE) and (nameSpace <> NS_IGNORE) and (attr^.ns <> nil) and (xmlStrEqual(nameSpace, attr^.ns^.href) <> 0))); + ((nameSpace <> NS_EXCLUDE) and (nameSpace <> NS_IGNORE) and (attr^.ns <> nil) and (xmlStrEqual(nameSpace, attr^.ns^.href) <> 0)) +end; + +function xsdTestProp(attr: xmlAttrPtr; name, nameSpace: xmlCharPtr): Boolean; +begin + Result := (attr <> nil) and (xmlStrEqual(name, attr^.name) <> 0) and xsdTestPropNs(attr, nameSpace); end; function xsdTryGetProp(node: xmlNodePtr; name, nameSpace: xmlCharPtr): xmlAttrPtr; |
