xsl-list
[Top] [All Lists]

RE: Creation of DTD

2005-08-19 08:31:58
DTDs only allow you to constrain the order of elements by name, not by
value. In fact even XML Schema, which goes further than DTDs in contraining
what the values of elements and attributes can be, doesn't allow you to
constrain the ordering based on values.

To bring it back to be on-topic, it's often quite useful to use stylesheets
for validation. Write template rules that produce error messages:

<xsl:template match="row">
  <xsl:if test="not(item[1]/@name='Price')">
    <error>First item in row must be Price</error>
  </xsl:if>
  <xsl:if test="not(item[2]/@name='Item')">
    <error>Second item in row must be Item</error>
  </xsl:if>

etc.

For a higher-level tool based on this approach, see Schematron.

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Verakso [mailto:verakso(_at_)gmail(_dot_)com] 
Sent: 19 August 2005 14:24
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Creation of DTD

I not quite sure if creation of DTD's is out of the scope of this
list, if so kindly point me in the right decision.

My problem is, first I am a bit rusty in writing DTD's, second, I not
even sure I can do what I want with a DTD, perhaps a Schema was more
appropriate.

The scenario is as follows. From a system, I get a CSV file, which is
converted into a XML file, like:
<data>
      <row count="1">
              <item name="Price">5</item>
              <item name="Item">Football</item>
              <item name="SKU">1010</item>
      </row>
      <row count="2">
              <item name="Price">15</item>
              <item name="Item">Basket Ball</item>
              <item name="SKU">1012</item>
      </row>
      <row count="n">
              <item name="Price">10</item>
              <item name="Item">ball</item>
              <item name="SKU"></item>
      </row>
</data>

What I would like to do, is to make a DTD so I can check if the item
elements is present, and in that order. CSV is not at "strong" as XML,
and I would like to test up front, if the column names has been
changed in the CSV import.

But AFAIK, it is not possible to write a DTD that specifies the order
and requirements of the name attributes, or am I wrong?

/Thomas

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>