dc09453a77
* renamed FeedSub plugin to OStatus * now setting avatar on subscriptions * general fixes for subscription * integrated PuSH hub to handle only user timelines on canonical ID url; sends updates directly * set $config['feedsub']['nohub'] = true to test w/ foreign feeds that don't have hubs (won't actually receive updates though) * a few bits of code documentation * HMAC support for verified distributions (safest if sub setup is on HTTPS) And a couple core changes: * minimizing HTML output for exceptions in API requests to aid in debugging * fix for rel=self link in apitimelineuser when id given This does not not yet include any of the individual subscription management (Salmon notifications for sub/unsub, etc) nor a nice UI for user subscriptions. Needs some further cleanup to treat posts as status updates instead of link references.
114 lines
4.4 KiB
XML
Executable File
114 lines
4.4 KiB
XML
Executable File
<?xml version='1.0' encoding='UTF-8'?>
|
|
<!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html -->
|
|
<!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html -->
|
|
<!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html -->
|
|
|
|
<grammar xmlns='http://relaxng.org/ns/structure/1.0'
|
|
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
|
|
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
|
|
ns='http://purl.org/rss/1.0/'
|
|
datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'>
|
|
|
|
<start>
|
|
<element name='RDF' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<ref name='RDFContent'/>
|
|
</element>
|
|
</start>
|
|
|
|
<define name='RDFContent' ns='http://purl.org/rss/1.0/'>
|
|
<interleave>
|
|
<element name='channel'>
|
|
<ref name='channelContent'/>
|
|
</element>
|
|
<optional>
|
|
<element name='image'><ref name='imageContent'/></element>
|
|
</optional>
|
|
<oneOrMore>
|
|
<element name='item'><ref name='itemContent'/></element>
|
|
</oneOrMore>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='channelContent' combine="interleave">
|
|
<interleave>
|
|
<element name='title'><data type='string'/></element>
|
|
<element name='link'><data type='anyURI'/></element>
|
|
<element name='description'><data type='string'/></element>
|
|
<element name='image'>
|
|
<attribute name='resource' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<data type='anyURI'/>
|
|
</attribute>
|
|
</element>
|
|
<element name='items'>
|
|
<ref name='itemsContent'/>
|
|
</element>
|
|
<attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<data type='anyURI'/>
|
|
</attribute>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name="itemsContent">
|
|
<element name="Seq" ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<oneOrMore>
|
|
<element name="li" ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<choice>
|
|
<attribute name='resource'> <!-- Why doesn't RDF/RSS1.0 ns qualify this attribute? -->
|
|
<data type='anyURI'/>
|
|
</attribute>
|
|
<attribute name='resource' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<data type='anyURI'/>
|
|
</attribute>
|
|
</choice>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='imageContent'>
|
|
<interleave>
|
|
<element name='title'><data type='string'/></element>
|
|
<element name='link'><data type='anyURI'/></element>
|
|
<element name='url'><data type='anyURI'/></element>
|
|
<attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<data type='anyURI'/>
|
|
</attribute>
|
|
</interleave>
|
|
</define>
|
|
|
|
<define name='itemContent'>
|
|
<interleave>
|
|
<element name='title'><data type='string'/></element>
|
|
<element name='link'><data type='anyURI'/></element>
|
|
<optional><element name='description'><data type='string'/></element></optional>
|
|
<ref name="anyThing"/>
|
|
<attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<data type='anyURI'/>
|
|
</attribute>
|
|
</interleave>
|
|
</define>
|
|
|
|
|
|
<define name='anyThing'>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<text/>
|
|
<element>
|
|
<anyName>
|
|
<except>
|
|
<nsName/>
|
|
</except>
|
|
</anyName>
|
|
<ref name='anyThing'/>
|
|
<zeroOrMore>
|
|
<attribute>
|
|
<anyName/>
|
|
</attribute>
|
|
</zeroOrMore>
|
|
</element>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</define>
|
|
|
|
</grammar>
|