Author: atsushi
Date: 2006-04-03 19:58:51 -0400 (Mon, 03 Apr 2006)
New Revision: 58987
Added:
trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/atom.rnc
Modified:
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/ChangeLog
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncParser.jay
trunk/mcs/class/Commons.Xml.Relaxng/Test/ChangeLog
trunk/mcs/class/Commons.Xml.Relaxng/Test/RncTests.cs
trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/ChangeLog
Log:
2006-04-04 Atsushi Enomoto <[EMAIL PROTECTED]>
* RncParser.jay : handle "nested" annotations as well. This fixes
atom.rnc parsing.
* atom.rnc : new file for RNC parser test (It is from
http://atompub.org/2005/08/17/atom.rnc i.e.
http://www.ietf.org/rfc/rfc4287.txt).
* RncTests.cs : added atom.rnc parsing test.
Modified: trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/ChangeLog
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/ChangeLog
2006-04-03 23:46:37 UTC (rev 58986)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/ChangeLog
2006-04-03 23:58:51 UTC (rev 58987)
@@ -1,5 +1,10 @@
2006-04-04 Atsushi Enomoto <[EMAIL PROTECTED]>
+ * RncParser.jay : handle "nested" annotations as well. This fixes
+ atom.rnc parsing.
+
+2006-04-04 Atsushi Enomoto <[EMAIL PROTECTED]>
+
* XmlChar.cs : copied newer one from System.Xml.
* RncParser.jay,
RncTokenizer.cs :
Modified:
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncParser.jay
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncParser.jay
2006-04-03 23:46:37 UTC (rev 58986)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncParser.jay
2006-04-03 23:58:51 UTC (rev 58987)
@@ -1078,12 +1078,23 @@
*/
AnnotationAttributesContent /* returns null */
- : OpenBracket NestedAnnotationAttributes AnnotationContent CloseBracket
+ : OpenBracket NestedAnnotationContents CloseBracket
{
$$ = null;
}
;
+// ditto (see also AnnotationContentInAnnotations)
+NestedAnnotationContents
+ : /* empty */
+ | PrefixedName Equal Literal NestedAnnotationContents
+ | IdentifierOrKeyword Equal Literal NestedAnnotationContents
+ | PrefixedName AnnotationAttributesContent NestedAnnotationContents
+ | IdentifierOrKeyword AnnotationAttributesContent
NestedAnnotationContents
+ | Literal
+ | Literal NestedAnnotationContents
+ ;
+
NestedAnnotationAttributes /* returns null */
: /* empty */
{
Modified: trunk/mcs/class/Commons.Xml.Relaxng/Test/ChangeLog
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Test/ChangeLog 2006-04-03 23:46:37 UTC
(rev 58986)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Test/ChangeLog 2006-04-03 23:58:51 UTC
(rev 58987)
@@ -1,5 +1,9 @@
2006-04-04 Atsushi Enomoto <[EMAIL PROTECTED]>
+ * RncTests.cs : added atom.rnc parsing test.
+
+2006-04-04 Atsushi Enomoto <[EMAIL PROTECTED]>
+
* RncTests.cs : added surrogate test and foreign-elements/attributes
ambiguity test.
Modified: trunk/mcs/class/Commons.Xml.Relaxng/Test/RncTests.cs
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Test/RncTests.cs 2006-04-03
23:46:37 UTC (rev 58986)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Test/RncTests.cs 2006-04-03
23:58:51 UTC (rev 58987)
@@ -41,6 +41,12 @@
}
[Test]
+ public void TestAtomRnc ()
+ {
+ Compile ("Test/XmlFiles/atom.rnc");
+ }
+
+ [Test]
// Make sure that it is not rejected by ambiguity between
// foreign attribute and foreign element.
public void Annotations ()
Modified: trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/ChangeLog
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/ChangeLog 2006-04-03
23:46:37 UTC (rev 58986)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/ChangeLog 2006-04-03
23:58:51 UTC (rev 58987)
@@ -1,3 +1,9 @@
+2006-04-04 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * atom.rnc : new file for RNC parser test (It is from
+ http://atompub.org/2005/08/17/atom.rnc i.e.
+ http://www.ietf.org/rfc/rfc4287.txt).
+
2004-03-17 Atsushi Enomoto <[EMAIL PROTECTED]>
* Added relaxng.rng and relaxng.rnc.
Added: trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/atom.rnc
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/atom.rnc 2006-04-03
23:46:37 UTC (rev 58986)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/atom.rnc 2006-04-03
23:58:51 UTC (rev 58987)
@@ -0,0 +1,339 @@
+# -*- rnc -*-
+# RELAX NG Compact Syntax Grammar for the
+# Atom Format Specification Version 11
+
+namespace atom = "http://www.w3.org/2005/Atom"
+namespace xhtml = "http://www.w3.org/1999/xhtml"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace local = ""
+
+start = atomFeed | atomEntry
+
+# Common attributes
+
+atomCommonAttributes =
+ attribute xml:base { atomUri }?,
+ attribute xml:lang { atomLanguageTag }?,
+ undefinedAttribute*
+
+# Text Constructs
+
+atomPlainTextConstruct =
+ atomCommonAttributes,
+ attribute type { "text" | "html" }?,
+ text
+
+atomXHTMLTextConstruct =
+ atomCommonAttributes,
+ attribute type { "xhtml" },
+ xhtmlDiv
+
+atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
+
+# Person Construct
+
+atomPersonConstruct =
+ atomCommonAttributes,
+ (element atom:name { text }
+ & element atom:uri { atomUri }?
+ & element atom:email { atomEmailAddress }?
+ & extensionElement*)
+
+# Date Construct
+
+atomDateConstruct =
+ atomCommonAttributes,
+ xsd:dateTime
+
+# atom:feed
+
+atomFeed =
+ [
+ s:rule [
+ context = "atom:feed"
+ s:assert [
+ test = "atom:author or not(atom:entry[not(atom:author)])"
+ "An atom:feed must have an atom:author unless all "
+ ~ "of its atom:entry children have an atom:author."
+ ]
+ ]
+ ]
+ element atom:feed {
+ atomCommonAttributes,
+ (atomAuthor*
+ & atomCategory*
+ & atomContributor*
+ & atomGenerator?
+ & atomIcon?
+ & atomId
+ & atomLink*
+ & atomLogo?
+ & atomRights?
+ & atomSubtitle?
+ & atomTitle
+ & atomUpdated
+ & extensionElement*),
+ atomEntry*
+ }
+
+# atom:entry
+
+atomEntry =
+ [
+ s:rule [
+ context = "atom:entry"
+ s:assert [
+ test = "atom:[EMAIL PROTECTED]'alternate'] "
+ ~ "or atom:link[not(@rel)] "
+ ~ "or atom:content"
+ "An atom:entry must have at least one atom:link element "
+ ~ "with a rel attribute of 'alternate' "
+ ~ "or an atom:content."
+ ]
+ ]
+ s:rule [
+ context = "atom:entry"
+ s:assert [
+ test = "atom:author or "
+ ~ "../atom:author or atom:source/atom:author"
+ "An atom:entry must have an atom:author "
+ ~ "if its feed does not."
+ ]
+ ]
+ ]
+ element atom:entry {
+ atomCommonAttributes,
+ (atomAuthor*
+ & atomCategory*
+ & atomContent?
+ & atomContributor*
+ & atomId
+ & atomLink*
+ & atomPublished?
+ & atomRights?
+ & atomSource?
+ & atomSummary?
+ & atomTitle
+ & atomUpdated
+ & extensionElement*)
+ }
+
+# atom:content
+
+atomInlineTextContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { "text" | "html" }?,
+ (text)*
+ }
+
+atomInlineXHTMLContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { "xhtml" },
+ xhtmlDiv
+ }
+
+atomInlineOtherContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { atomMediaType }?,
+ (text|anyElement)*
+ }
+
+atomOutOfLineContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { atomMediaType }?,
+ attribute src { atomUri },
+ empty
+ }
+
+atomContent = atomInlineTextContent
+ | atomInlineXHTMLContent
+ | atomInlineOtherContent
+ | atomOutOfLineContent
+
+# atom:author
+
+atomAuthor = element atom:author { atomPersonConstruct }
+
+# atom:category
+
+atomCategory =
+ element atom:category {
+ atomCommonAttributes,
+ attribute term { text },
+ attribute scheme { atomUri }?,
+ attribute label { text }?,
+ undefinedContent
+ }
+
+# atom:contributor
+
+atomContributor = element atom:contributor { atomPersonConstruct }
+
+# atom:generator
+
+atomGenerator = element atom:generator {
+ atomCommonAttributes,
+ attribute uri { atomUri }?,
+ attribute version { text }?,
+ text
+}
+
+# atom:icon
+
+atomIcon = element atom:icon {
+ atomCommonAttributes,
+ (atomUri)
+}
+
+# atom:id
+
+atomId = element atom:id {
+ atomCommonAttributes,
+ (atomUri)
+}
+
+# atom:logo
+
+atomLogo = element atom:logo {
+ atomCommonAttributes,
+ (atomUri)
+}
+
+# atom:link
+
+atomLink =
+ element atom:link {
+ atomCommonAttributes,
+ attribute href { atomUri },
+ attribute rel { atomNCName | atomUri }?,
+ attribute type { atomMediaType }?,
+ attribute hreflang { atomLanguageTag }?,
+ attribute title { text }?,
+ attribute length { text }?,
+ undefinedContent
+ }
+
+# atom:published
+
+atomPublished = element atom:published { atomDateConstruct }
+
+# atom:rights
+
+atomRights = element atom:rights { atomTextConstruct }
+
+# atom:source
+
+atomSource =
+ element atom:source {
+ atomCommonAttributes,
+ (atomAuthor*
+ & atomCategory*
+ & atomContributor*
+ & atomGenerator?
+ & atomIcon?
+ & atomId?
+ & atomLink*
+ & atomLogo?
+ & atomRights?
+ & atomSubtitle?
+ & atomTitle?
+ & atomUpdated?
+ & extensionElement*)
+ }
+
+# atom:subtitle
+
+atomSubtitle = element atom:subtitle { atomTextConstruct }
+
+# atom:summary
+
+atomSummary = element atom:summary { atomTextConstruct }
+
+# atom:title
+
+atomTitle = element atom:title { atomTextConstruct }
+
+# atom:updated
+
+atomUpdated = element atom:updated { atomDateConstruct }
+
+# Low-level simple types
+
+atomNCName = xsd:string { minLength = "1" pattern = "[^:]*" }
+
+# Whatever a media type is, it contains at least one slash
+atomMediaType = xsd:string { pattern = ".+/.+" }
+
+# As defined in RFC 3066
+atomLanguageTag = xsd:string {
+ pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"
+}
+
+# Unconstrained; it's not entirely clear how IRI fit into
+# xsd:anyURI so let's not try to constrain it here
+atomUri = text
+
+# Whatever an email address is, it contains at least one @
+atomEmailAddress = xsd:string { pattern = "[EMAIL PROTECTED]" }
+
+# Simple Extension
+
+simpleExtensionElement =
+ element * - atom:* {
+ text
+ }
+
+# Structured Extension
+
+structuredExtensionElement =
+ element * - atom:* {
+ (attribute * { text }+,
+ (text|anyElement)*)
+ | (attribute * { text }*,
+ (text?, anyElement+, (text|anyElement)*))
+ }
+
+# Other Extensibility
+
+extensionElement =
+ simpleExtensionElement | structuredExtensionElement
+
+undefinedAttribute =
+ attribute * - (xml:base | xml:lang | local:*) { text }
+
+undefinedContent = (text|anyForeignElement)*
+
+anyElement =
+ element * {
+ (attribute * { text }
+ | text
+ | anyElement)*
+ }
+
+anyForeignElement =
+ element * - atom:* {
+ (attribute * { text }
+ | text
+ | anyElement)*
+ }
+
+# XHTML
+
+anyXHTML = element xhtml:* {
+ (attribute * { text }
+ | text
+ | anyXHTML)*
+}
+
+xhtmlDiv = element xhtml:div {
+ (attribute * { text }
+ | text
+ | anyXHTML)*
+}
+
+# EOF
+
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches