Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / XML / November 2004

Tip: Looking for answers? Try searching our database.

xhtml in xml element

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Wole Ogunremi - 28 Nov 2004 03:16 GMT
I guess this is a well asked question but it is tripping me up!

I'm putting a forum together allowing xhtml markup content. I am validating
against a schema but getting "Could not find schema information for element
<elementName>...

I would appreciate if anyone could advice where I am going wrong. TIA

Here's my xsd:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="Topics" targetNamespace="http://www.test.com/Topics.xsd"
elementFormDefault="qualified"
xmlns:tes="http://www.test.com/Topics.xsd"
xmlns="http://www.test.com/Topics.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ForumTopic">
 <xs:complexType>
  <xs:sequence>
   <xs:element name="TopicID" type="xs:ID" minOccurs="1" maxOccurs="1" />
   <xs:element name="MainThread" type="tes:Thread" minOccurs="1"
maxOccurs="1" />
   <xs:choice>
    <xs:element name="SubThreads" minOccurs="0" maxOccurs="1">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="ReceivingReplys" type="xs:boolean" />
       <xs:element name="SubThread" minOccurs="0" maxOccurs="unbounded"
type="tes:Thread" />
      </xs:sequence>
     </xs:complexType>
    </xs:element>
    <xs:element name="IsLockedThread" type="xs:boolean" fixed="true" />
   </xs:choice>
  </xs:sequence>
 </xs:complexType>
</xs:element>
<xs:complexType name="OnDateTime">
 <xs:sequence>
  <xs:element name="OnDate" type="xs:date" minOccurs="1" maxOccurs="1" />
  <xs:element name="AtTime" type="xs:time" minOccurs="1" maxOccurs="1" />
 </xs:sequence>
</xs:complexType>
<xs:complexType name="Thread">
 <xs:sequence>
  <xs:element name="ThreadID" type="xs:ID" minOccurs="1" maxOccurs="1" />
  <xs:element name="AuthorID" type="xs:string" minOccurs="1" maxOccurs="1"
/>
  <xs:element name="Created" type="OnDateTime" minOccurs="1" maxOccurs="1"
/>
  <xs:element name="Modified" type="OnDateTime" minOccurs="0" maxOccurs="1"
/>
  <xs:element name="Subject" type="xs:string" minOccurs="1" maxOccurs="1"
/>
  <xs:element name="Content" maxOccurs="1" minOccurs="1">
   <xs:complexType mixed="true">
    <xs:sequence>
     <xs:any maxOccurs="unbounded" minOccurs="0"
      namespace="http://www.w3.org/1999/xhtml" processContents="lax" />
    </xs:sequence>
   </xs:complexType>
  </xs:element>
 </xs:sequence>
 <xs:attribute name="ParentThreadID" type="xs:string" use="required" />
</xs:complexType>
</xs:schema>

And here is my xml

<?xml version="1.0" encoding="utf-8" ?>
<tes:ForumTopic xmlns:tes="http://www.test.com/Topics.xsd"
xmlns:xh="http://www.w3.org/1999/xhtml">
 <tes:TopicID>topic2</tes:TopicID>
 <tes:MainThread ParentThreadID="topic2">
   <tes:ThreadID>thrd1</tes:ThreadID>
   <tes:AuthorID>wolex</tes:AuthorID>
   <tes:Created>
     <tes:OnDate>2004-11-08</tes:OnDate>
     <tes:AtTime>10:14:21</tes:AtTime>
   </tes:Created>
   <tes:Subject>Test post</tes:Subject>
   <tes:Content>
     <xh:p>Par<xh:b>agr</xh:b>aph 1</xh:p>
     <xh:p>Paragraph 2</xh:p>
     <xh:p>Paragraph 3</xh:p>
   </tes:Content>
 </tes:MainThread>
 <tes:SubThreads>
   <tes:ReceivingReplys>true</tes:ReceivingReplys>
   <tes:SubThread ParentThreadID="thrd1">
     <tes:ThreadID>thrd2</tes:ThreadID>
     <tes:AuthorID>wolex</tes:AuthorID>
     <tes:Created>
       <tes:OnDate>2004-11-08</tes:OnDate>
       <tes:AtTime>10:19:32</tes:AtTime>
     </tes:Created>
     <tes:Subject>Your post makes no sense</tes:Subject>
     <tes:Content>
       <xh:p>Paragraph 1 is not right.</xh:p>
     </tes:Content>
   </tes:SubThread>
   <tes:SubThread ParentThreadID="thrd2">
     <tes:ThreadID>thrd3</tes:ThreadID>
     <tes:AuthorID>Anonymous</tes:AuthorID>
     <tes:Created>
       <tes:OnDate>2004-11-27</tes:OnDate>
       <tes:AtTime>14:17:09</tes:AtTime>
     </tes:Created>
     <tes:Subject>RE: Test</tes:Subject>
     <tes:Content>
  <xh:p><xh:b>Police searches</xh:b></xh:p>
  <xh:p>"We want justice done. Some one killed him and that person has to
be locked up." </xh:p>
  <xh:p>Mr Taylor said he still found the loss of his son "difficult to
cope with". </xh:p>
  <xh:p>Police said in October they had searched several Peckham homes the
previous month. </xh:p>
  <xh:p>At the time Scotland Yard said it was confident the case would be
solved. </xh:p>
  <xh:p>Mr Taylor said he hopes to pass on positive lessons learned from
his son's death to young people in London and to raise awareness among
children of the danger of carrying weapons. </xh:p>
  <xh:p>However, he urged parents to take a stronger role in looking after
their children. </xh:p>
  <xh:p>"From leaving home in the morning to when he comes back in the
evening because what the child does outside - [parents are] oblivious to
it," he said. </xh:p>
  <xh:p>Dean of Southwark Colin Slee said police had done a lot of work in
the Peckham to improve safety. </xh:p>
  <xh:p>"I think children feel safe when they are in school, both primary
and secondary, but it's when they are on the streets that there's a
difficulty." </xh:p>
     </tes:Content>
   </tes:SubThread>
   <tes:SubThread ParentThreadID="thrd3">
     <tes:ThreadID>thrd4</tes:ThreadID>
     <tes:AuthorID>Anonymous</tes:AuthorID>
     <tes:Created>
       <tes:OnDate>2004-11-27</tes:OnDate>
       <tes:AtTime>14:31:36</tes:AtTime>
     </tes:Created>
     <tes:Subject>RE: Test</tes:Subject>
     <tes:Content>
       <xh:p xmlns="">Differences Between HTML and XHTML<xh:br />
The &lt;blockquote&gt; tag is supposed to contain only block-level elements
within it, and not just plain text.</xh:p>
       <xh:p xmlns="">To validate the page as strict XHTML, you must add a
block-level element around the text within the &lt;blockquote&gt; tag, like
this:</xh:p>
       <xh:p xmlns="">&lt;blockquote&gt;<xh:br />
&lt;p&gt;here is a long quotation here is a long quotation&lt;/p&gt;<xh:br
/>
&lt;/blockquote&gt;</xh:p>
       <xh:p xmlns="">
       </xh:p>
     </tes:Content>
   </tes:SubThread>
   <tes:SubThread ParentThreadID="thrd4">
     <tes:ThreadID>thrd5</tes:ThreadID>
     <tes:AuthorID>Anonymous</tes:AuthorID>
     <tes:Created>
       <tes:OnDate>2004-11-27</tes:OnDate>
       <tes:AtTime>14:43:50</tes:AtTime>
     </tes:Created>
     <tes:Subject>RE: Test</tes:Subject>
     <tes:Content>
       <xh:p xmlns="">
         <xh:b>Parental problems</xh:b>
       </xh:p>
       <xh:p xmlns="">He too was confident the killer would be caught as
the "gap" between police and the community was changing for the better.
</xh:p>
       <xh:p xmlns="">"I think ultimately the killers will be found."
</xh:p>
       <xh:p xmlns="">He said the role of parents was the most important
aspect. </xh:p>
       <xh:p xmlns="">"All of the head teachers that I speak to say that
they are fairly content with the security of the children in school and not
content with the way parents are behaving." </xh:p>
       <xh:p xmlns="">He said children "are kicked out in the morning and
told to go to school by themselves in street that are quite dark", children
frequently return home to empty houses, or wander the streets, often in
groups "purely because they are bored".</xh:p>
     </tes:Content>
   </tes:SubThread>
   <tes:SubThread ParentThreadID="thrd5">
     <tes:ThreadID>thrd6</tes:ThreadID>
     <tes:AuthorID>Anonymous</tes:AuthorID>
     <tes:Created>
       <tes:OnDate>2004-11-27</tes:OnDate>
       <tes:AtTime>14:46:11</tes:AtTime>
     </tes:Created>
     <tes:Subject>RE: Test</tes:Subject>
     <tes:Content>
       <xh:p xmlns="">
         <xh:b>Parental problems</xh:b>
       </xh:p>
       <xh:p xmlns="">He too was confident the killer would be caught as
the "gap" between police and the community was changing for the better.
</xh:p>
       <xh:p xmlns="">"I think ultimately the killers will be found."
</xh:p>
       <xh:p xmlns="">He said the role of parents was the most important
aspect. </xh:p>
       <xh:p xmlns="">"All of the head teachers that I speak to say that
they are fairly content with the security of the children in school and not
content with the way parents are behaving." </xh:p>
       <xh:p xmlns="">He said children "are kicked out in the morning and
told to go to school by themselves in street that are quite dark", children
frequently return home to empty houses, or wander the streets, often in
groups "purely because they are bored".</xh:p>
     </tes:Content>
   </tes:SubThread>
   <tes:SubThread ParentThreadID="thrd5">
     <tes:ThreadID>thrd6</tes:ThreadID>
     <tes:AuthorID>Anonymous</tes:AuthorID>
     <tes:Created>
       <tes:OnDate>2004-11-27</tes:OnDate>
       <tes:AtTime>15:12:06</tes:AtTime>
     </tes:Created>
     <tes:Subject>RE: Test</tes:Subject>
     <tes:Content>
       <xh:p>
         <xh:img
src="http://newsimg.bbc.co.uk/media/images/40566000/jpg/_40566183_india_also66.jpg"
wole="4" />
       </xh:p>
     </tes:Content>
   </tes:SubThread>
 </tes:SubThreads>
</tes:ForumTopic
Wole Ogunremi - 28 Nov 2004 03:29 GMT
>I guess this is a well asked question but it is tripping me up!
>
[quoted text clipped - 227 lines]
>  </tes:SubThreads>
> </tes:ForumTopic>

May I just add that I am only having problems with the xhtml elements inside
the Content node. Thanks.
Martin Honnen - 28 Nov 2004 15:18 GMT
> I'm putting a forum together allowing xhtml markup content. I am validating
> against a schema but getting "Could not find schema information for element
> <elementName>...

You have mentioned in comp.text.xml that you get those error messages
with the Visual Studio .NET validator. I don't use that tool but I
assume it uses the XmlValidatingReader to validate files and indeed when
I try to validate your file against the schema with C# code alike

  public static void Main (string[] args) {
    XmlSchemaCollection schemaCollection = new XmlSchemaCollection();
    schemaCollection.Add("http://www.test.com/Topics.xsd",
"test2004112801Xsd.xml");

    XmlValidatingReader validatingReader = new XmlValidatingReader(new
XmlTextReader(@"test2004112801.xml"));
    validatingReader.Schemas.Add(schemaCollection);

    validatingReader.ValidationEventHandler += new
ValidationEventHandler(ValidationHandler);

    Console.WriteLine("Starting validation.");
    while (validatingReader.Read()) {}
    Console.WriteLine("Validation finished.");
  }

  public static void ValidationHandler (object sender,
ValidationEventArgs e) {
    switch (e.Severity) {
      case XmlSeverityType.Warning:
        Console.WriteLine("Warning: {0}.", e.Message);
        break;
      case XmlSeverityType.Error:
       Console.WriteLine("Error: {0}.", e.Message);
       break;
    }
  }

then it shows one error for the duplicated id and lots of warnings for
the undefined XHTML elements. I am not sure why it does so as your
schema has
  processContents="lax"
but if you use
  processContents="skip"
then the warnings vanish so maybe those warnings vanish in Visual Studio
too that way.

Signature

    Martin Honnen
    http://JavaScript.FAQTs.com/


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.