Boost C++ Libraries: Ticket #7899: Invalid URLs in container documentation https://svn.boost.org/trac10/ticket/7899 <p> Container library has wrong index, any link from this page cannot be found: </p> <p> <a href="http://www.boost.org/doc/libs/1_52_0/doc/html/container/index.html">http://www.boost.org/doc/libs/1_52_0/doc/html/container/index.html</a> </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/7899 Trac 1.4.3 alexey kutumov <alexey.kutumov@…> Thu, 17 Jan 2013 07:05:15 GMT <link>https://svn.boost.org/trac10/ticket/7899#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:1</guid> <description> <p> Also same problem exists in <a href="http://www.boost.org/doc/libs/1_52_0/doc/html/interprocess/index.html">http://www.boost.org/doc/libs/1_52_0/doc/html/interprocess/index.html</a> </p> <p> I think that problem is in auto indexing </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sun, 10 Feb 2013 21:43:22 GMT</pubDate> <title>owner, component changed https://svn.boost.org/trac10/ticket/7899#comment:2 https://svn.boost.org/trac10/ticket/7899#comment:2 <ul> <li><strong>owner</strong> changed from <span class="trac-author">Matias Capeletto</span> to <span class="trac-author">John Maddock</span> </li> <li><strong>component</strong> <span class="trac-field-old">Documentation</span> → <span class="trac-field-new">auto_index</span> </li> </ul> Ticket John Maddock Mon, 11 Feb 2013 09:52:09 GMT owner changed https://svn.boost.org/trac10/ticket/7899#comment:3 https://svn.boost.org/trac10/ticket/7899#comment:3 <ul> <li><strong>owner</strong> changed from <span class="trac-author">John Maddock</span> to <span class="trac-author">Daniel James</span> </li> </ul> <p> This is an issue with how the HTML docs for the website are built - there is a docbook limitation that there can only be one index - so if you build multiple library's docs in one big build you have a problem. In this case it seems like the index for Boost.Build is getting inserted into every docbook &lt;index&gt; element. </p> <p> Daniel, is there any way the HTML doc build can be changed to build docs with indexes separately? It doesn't matter whether they're manual indexes like Boost.Build or auto-generated ones, xsltproc just overwrites them all with the first one seen if they're all in one big doc. </p> Ticket Daniel James Mon, 11 Feb 2013 11:28:44 GMT <link>https://svn.boost.org/trac10/ticket/7899#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:4</guid> <description> <p> I think that would be up to the individual library maintainers. The problem is linking between libraries, linking to other documentation is tricky. Docbook does have a mechanism for doing it (the olink tag). It'd be great to support it, but it's complicated, I wouldn't know how to implement support in the build system. The other option is to link using 'boost' urls, but that's pretty fragile. We get a lot of broken links that way, and no one really checks them. </p> </description> <category>Ticket</category> </item> <item> <author>Alexey.kutumov@…</author> <pubDate>Tue, 12 Feb 2013 01:08:28 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:5</guid> <description> <p> I asked question in mailing list about auto_index: maybe it is possible to add support for boostbook and pefrorm indexing for every boostbook before merging to single file. I think that in this case we can get correct indexes for individual libraries. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Tue, 12 Feb 2013 10:00:37 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:6 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:6</guid> <description> <p> You're right of course - if the container docs were translated all the way to docbook prior to inclusion in the "big build" then it would work. I'm experimenting with that now, but it's not helped by the fact that the doc build takes so long... </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Tue, 12 Feb 2013 16:43:17 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:7</guid> <description> <p> I've looked into this, but I simply cannot make it work: if I modify doc/Jamfile and doc/src/boost.xml to load the processed docbook ("container.auto_index.docbook") then I get XML validity errors inside the program_options docs :-( </p> <p> Daniel, do you know if this should work or not? I thought Boostbook was a superset of Docbook? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Wed, 13 Feb 2013 11:19:47 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:8 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:8</guid> <description> <p> Boostbook isn't quite a superset of Docbook, they use <code>classname</code> and <code>methodname</code> differently. I've been thinking about fixing it (see <a class="new ticket" href="https://svn.boost.org/trac10/ticket/5244" title="#5244: Bugs: &lt;methodname&gt; and &lt;classname&gt; clash with docbook (new)">#5244</a>), but it didn't seem to be enough of an issue to be worth the hassle. Since program options uses <code>classname</code>, that might be your problem, but without seeing the error I couldn't tell. Have you checked that the program_options docs are valid boostbook? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Wed, 13 Feb 2013 18:19:09 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:9 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:9</guid> <description> <p> OK there seem to be a number of issues here, you're correct that program_options doesn't validate as Boostbook. However, there are so many errors that it's hard to know where to begin. I'm not sure if our DTD is accurate enough to fully validate anyway? Either way I'll attach the error log. </p> <p> The other issue is that if I gut boost.xml so that the only library included is the container docbook xml I still see errors from our XSL code: </p> <pre class="wiki">runtime error: file file:///D:/data/boost/trunk/tools/boostbook/xsl/docbook.xsl line 436 element attribute xsl:attribute: The QName 'rev:last-revision' has no namespace binding in scope in the stylesheet; this is an error, since the namespace was not specified by the instruction itself. error: file src/boost.xml xsltRunStylesheet : run failed </pre><p> Do you have any ideas what that means and/or what the issue might be? </p> <p> One possible hack (if it's possible) is to change the Boostbook XSL to allow a reference to an external docbook file, which doesn't get included at that point, but just outputs an xi:include so it's only processed at the docbook-&gt;HTML stage. </p> <p> Thoughts? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Wed, 13 Feb 2013 18:20:28 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/7899 https://svn.boost.org/trac10/ticket/7899 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">xmllint.log</span> </li> </ul> Ticket Daniel James Thu, 14 Feb 2013 00:46:56 GMT <link>https://svn.boost.org/trac10/ticket/7899#comment:10 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:10</guid> <description> <p> The first errors in the log are because the validator doesn't like xincludes, you need to process them first somehow. I think you can use <code>xmlint --xinclude</code>. </p> <p> The error for tutorial.xml:9 is correct, it just requires that the doctype in tutorial.xml be changed to <code>section</code>. </p> <p> The "defaulted from external subset" errors can be fixed by changing <code>standalone="yes"</code> to <code>standalone="no"</code> at the beginning of the appropriate file. <code>standalone="yes"</code> means that the document can be parsed without consulting the schema - the error is saying that it needs the schema in order to get the defaults. </p> <p> None of those errors should break anything though. </p> <p> As for the xsl error, I'd have to look into it. I never understood the custom attribute stuff, it always seemed a bit pointless to me. Just the way that the attributes is copied is a bit odd - I believe the <code>xsl:for-each</code> can be replaced with something like <code>&lt;xsl:copy-of select="@*" /&gt;</code>. How are you running xsl? (so I can replicate your errors). </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Thu, 14 Feb 2013 00:58:14 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:11 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:11</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/82863" title="Boostbook: Simpler method for copying chapter attributes. Refs #7899. ...">[82863]</a>) Boostbook: Simpler method for copying chapter attributes. Refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7899" title="#7899: Bugs: Invalid URLs in container documentation (closed: fixed)">#7899</a>. </p> <p> I'm not sure if this will fix the issue, but it's worth a try. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Sat, 16 Feb 2013 11:28:19 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:12 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:12</guid> <description> <p> Daniel you're a wizard: that fixes almost everything: certainly the two issues above, and I can get the container docs integrated into the build complete with correct index now. </p> <p> However, when I also fix interprocess and intrusive the same way (the only other libraries effect by this issue, then xsltproc seems to go into an infinite loop processing the docbook :-( </p> <p> I'll try and narrow it down later. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Tue, 19 Feb 2013 09:14:57 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:13 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:13</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/82994" title="Fix indexes in container/interprocess/intrusive libraries. Refs #7899.">[82994]</a>) Fix indexes in container/interprocess/intrusive libraries. Refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7899" title="#7899: Bugs: Invalid URLs in container documentation (closed: fixed)">#7899</a>. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Tue, 19 Feb 2013 09:17:04 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:14 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:14</guid> <description> <p> Daniel: can you check that the above fix is OK for you? </p> <p> Also will you take care of merging to release prior to the next release, or do you want me to do that? </p> <p> Regards, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Tue, 19 Feb 2013 09:19:13 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:15 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:15</guid> <description> <p> I just kicked off a documentation build. I'll merge if it works out. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Tue, 19 Feb 2013 19:15:35 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:16 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:16</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/83017" title="Remove autodoc dependencies from container/interprocess/intrusive ...">[83017]</a>) Remove autodoc dependencies from container/interprocess/intrusive libraries. Refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7899" title="#7899: Bugs: Invalid URLs in container documentation (closed: fixed)">#7899</a> </p> <p> I was getting duplicate target errors because 'standalone' depends on autodoc, so they were added to the dependencies twice. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Tue, 19 Feb 2013 21:30:51 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:17 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:17</guid> <description> <p> Still not working. My build script uses the automatically built quickbook, and it seems the auto index attributes are causing issues for it. The output from boost build follows. Any ideas on how to fix it? I can probably work around it by pre-building quickbook, but it'd be good to get this fixed. Maybe a question for the build list. </p> <pre class="wiki">Performing configuration checks - has_icu builds : no /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:1106: in virtual-target.register-actual-name from module virtual-target error: Duplicate name of actual target: &lt;p../bin.v2/libs/system/build/darwin-4.7.2/release/link-static&gt;libboost_system.a error: previous virtual target { darwin%darwin.archive-libboost_system.a.STATIC_LIB { darwin%darwin.compile.c++-error_code.o.OBJ { error_code.cpp.CPP } } } error: created from ../libs/system/build/boost_system error: another virtual target { darwin%darwin.archive-libboost_system.a.STATIC_LIB { darwin%darwin.compile.c++-error_code.o.OBJ { error_code.cpp.CPP } } } error: created from ../libs/system/build/boost_system error: added properties: &lt;auto-index-internal&gt;off &lt;auto-index-no-duplicates&gt;off &lt;auto-index-section-names&gt;on &lt;auto-index-verbose&gt;off &lt;auto-index&gt;off &lt;format&gt;docbook error: removed properties: &lt;format&gt;html /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:491: in actualize-no-scanner from module object(file-target)@3093 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:134: in object(file-target)@3093.actualize from module object(file-target)@3093 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:822: in actualize-source-type from module object(action)@3496 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:843: in actualize-sources from module object(action)@3496 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:783: in object(action)@3496.actualize from module object(action)@3496 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:311: in actualize-action from module object(file-target)@3497 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:500: in actualize-no-scanner from module object(file-target)@3497 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:134: in object(file-target)@3497.actualize from module object(file-target)@3497 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:822: in actualize-source-type from module object(action)@3505 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:841: in actualize-sources from module object(action)@3505 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:783: in object(action)@3505.actualize from module object(action)@3505 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:311: in actualize-action from module object(file-target)@3506 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:500: in actualize-no-scanner from module object(file-target)@3506 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:134: in object(file-target)@3506.actualize from module object(file-target)@3506 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:822: in actualize-source-type from module object(action)@7004 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:841: in actualize-sources from module object(action)@7004 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:783: in object(action)@7004.actualize from module object(action)@7004 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:311: in actualize-action from module object(file-target)@7005 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:500: in actualize-no-scanner from module object(file-target)@7005 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build/virtual-target.jam:134: in object(file-target)@7005.actualize from module object(file-target)@7005 /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/build-system.jam:736: in load from module build-system /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/kernel/modules.jam:289: in import from module modules /Volumes/Boost/boost/docs/build/build-trunk/boost/tools/build/v2/kernel/bootstrap.jam:139: in boost-build from module /Volumes/Boost/boost/docs/build/build-trunk/boost/boost-build.jam:17: in module scope from module </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Wed, 20 Feb 2013 00:00:07 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:18 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:18</guid> <description> <p> Pre-building quickbook worked around that issue, but now a lot of links are broken, because the standalone documentation is built with the wrong boost root. I think it should be possible to fix that by implementing a boost root feature in the build system. Ideally boost root should be set automatically by boost build, but I don't know how to do that. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 20 Feb 2013 09:32:17 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:19 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:19</guid> <description> <blockquote class="citation"> <p> Still not working. My build script uses the automatically built quickbook, and it seems the auto index attributes are causing issues for it. The output from boost build follows. Any ideas on how to fix it? I can probably work around it by pre-building quickbook, but it'd be good to get this fixed. Maybe a question for the build list. </p> </blockquote> <p> Shucks, sorry, no idea, I always use pre-built quickbook (and auto_index too). </p> <blockquote class="citation"> <p> Pre-building quickbook worked around that issue, but now a lot of links are broken, because the standalone documentation is built with the wrong boost root. </p> </blockquote> <p> Can you give me an example of where the links break? I wonder if setting the boost.root XSL param on the reference docbook targets can fix this? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Wed, 20 Feb 2013 09:46:13 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:20 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:20</guid> <description> <p> You can see the broken links at: </p> <p> <a class="ext-link" href="http://boost.cowic.de/rc/docs-inspect-trunk.html#doc"><span class="icon">​</span>http://boost.cowic.de/rc/docs-inspect-trunk.html#doc</a> </p> <p> Mainly the ones to hpp files. </p> <p> If you mean adding the XSL params to doc/Jamfile.v2, I don't think that will work, because it will use all the xsl params set, so boost.root will be used twice. I'm not sure what exactly will happen, but if it happens to work, it will be fragile as the order of parameters might change in the future. So I think we really need a mechanism to properly override the parameter. A new feature will solve that. </p> <p> Although there are other solutions, for example we could add another parameter to boostbook to tell it that it's doing a 'pre-process'. In which case it will just use 'boost:' for the root of these links, since that will be fixed up in the second run. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Wed, 20 Feb 2013 18:29:34 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:21 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:21</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/83050" title="Fix broken links in doc build. Move some xsl:param's into individual ...">[83050]</a>) Fix broken links in doc build. Move some xsl:param's into individual library's Jamfiles. Refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7899" title="#7899: Bugs: Invalid URLs in container documentation (closed: fixed)">#7899</a>. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 20 Feb 2013 18:32:09 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:22 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:22</guid> <description> <p> I've fixed the broken link issue - doc built locally within the lib sub-directory still build OK with the correct links as well. </p> <p> I had hoped I would have solved your duplicate-target error when not using pre-built quickbook, but sadly not :-( </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Thu, 21 Feb 2013 12:59:10 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7899#comment:23 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:23</guid> <description> <p> My phone line stopped working last night, so I might not be able to try this for a little while. FWIW you don't need to set the library parameter nowadays, the xsl works it out from boost root if it isn't already set. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Daniel James</dc:creator> <pubDate>Sun, 24 Feb 2013 14:46:30 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/7899#comment:24 https://svn.boost.org/trac10/ticket/7899#comment:24 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/83132" title="Merge auto-index fixes. Fixes #7899. ">[83132]</a>) Merge auto-index fixes. Fixes <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7899" title="#7899: Bugs: Invalid URLs in container documentation (closed: fixed)">#7899</a>. </p> Ticket Daniel James Sun, 24 Feb 2013 14:49:45 GMT <link>https://svn.boost.org/trac10/ticket/7899#comment:25 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7899#comment:25</guid> <description> <p> Also, <a class="changeset" href="https://svn.boost.org/trac10/changeset/83131" title="Merge Boostbook to release. Fixes to support new index build setup. ...">[83131]</a> which fixed the bug in boostbook. </p> </description> <category>Ticket</category> </item> </channel> </rss>