Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Jun 2013
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Transformation not working

    Hello... so I have a XML file that I want to be transformed using XSLT, but i don't understand why I is not working right. I have rewritten the xsl file over at least 4 times to no avail. I have a feeling that what I have in my XSL file may not be well-formed. I would appreciate any help.

    Heres my XSL code:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output method="html" encoding="UTF-8"/>
    <xsl:template match="/">
    <html>
    <head>
            <h1>DrugBank Data</h1>
    </head>
    <body>
    	<table border ="2">
    	<thead>
    		<tr>
    			<th>Drugbank Id</th>
    			<th>Name</th>
    			<th>Description</th>
    			<th>Substrate</th>
    			<th>Enzymes</th>
    			<th>Mechanism Of Action</th>
    			<th>Targets</th>
    		</tr>
    	</thead>
    	<tbody>
    		<xsl:for-each select="drugs/drug">
    		<tr>
    			<td><xsl:value-of select="drugbank-id"/></td>
    		        <td><xsl:value-of select="name"/></td>
    			<td><xsl:value-of select="description"/></td>
    			<td><xsl:value-of select="substrate"/></td>
    			<td><xsl:value-of select="enzymes"/></td>
    			<td><xsl:value-of select="mechanism-of-action"/></td>
    			<td><xsl:value-of select="targets"/></td>
    		</tr>
    		</xsl:for-each>
    	</tbody>
    	</table>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    And here is my a sample of my XML file:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet  type="text/xsl" version="2.0" href="drugbank.xsl"?>
    
    <drugs xmlns="http://drugbank.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.4" xsi:schemaLocation="http://www.drugbank.ca/docs/drugbank.xsd">
      <drug type="biotech" created="2005-06-13 07:24:05 -0600" updated="2013-05-12 21:37:25 -0600" version="3.0">
        <drugbank-id>DB00001</drugbank-id>
        <name>Lepirudin</name>
        <description>Lepirudin is identical to natural hirudin except for substitution of leucine for isoleucine at the N-terminal end of the molecule and the absence of a sulfate group on the tyrosine at position 63. It is produced via yeast cells.&#xD;</description>
        <cas-number>120993-53-5</cas-number>
        <synthesis-reference></synthesis-reference>
        <indication>For the treatment of heparin-induced thrombocytopenia</indication>
        <pharmacology>Lepirudin is used to break up clots and to reduce thrombocytopenia. It binds to thrombin and prevents thrombus or clot formation. It is a highly potent, selective, and essentially irreversible inhibitor of thrombin and clot-bond thrombin. Lepirudin requires no cofactor for its anticoagulant action. Lepirudin is a recombinant form of hirudin, an endogenous anticoagulant found in medicinal leeches.</pharmacology>
        <mechanism-of-action>Lepirudin forms a stable non-covalent complex with alpha-thrombin, thereby abolishing its ability to cleave fibrinogen and initiate the clotting cascade. The inhibition of thrombin prevents the blood clotting cascade. </mechanism-of-action>
    I'm not getting anything to show up in my HTML file. I'm using saxon9 to do the transformation, thanks...

  • #2
    Senior Coder Arbitrator's Avatar
    Join Date
    Mar 2006
    Location
    Splendora, Texas, United States of America
    Posts
    3,300
    Thanks
    28
    Thanked 275 Times in 269 Posts
    Quote Originally Posted by Vandy.Chan View Post
    Hello... so I have a XML file that I want to be transformed using XSLT, but i don't understand why I is not working
    Declare your namespace...

    Code:
    <xsl:stylesheet ... xmlns:d="http://drugbank.ca">
    ... and reference it...

    Code:
    <xsl:for-each select="d:drugs/d:drug">
    	<tr>
    		<td><xsl:value-of select="d:drugbank-id"/></td>
    		<td><xsl:value-of select="d:name"/></td>
    		<td><xsl:value-of select="d:description"/></td>
    		<td><xsl:value-of select="d:substrate"/></td>
    		<td><xsl:value-of select="d:enzymes"/></td>
    		<td><xsl:value-of select="d:mechanism-of-action"/></td>
    		<td><xsl:value-of select="d:targets"/></td>
    	</tr>
    </xsl:for-each>
    Also, your XML and HTML has errors:
    • There's no version pseudo-attribute defined for the xml-stylesheet processing instruction.
    • The correct media types for XSLT is application/xml or application/xslt+xml (not text/xsl).
    • An HTML document must begin with <!doctype html> or <!doctype html system "about:legacy-compat">. This can be done with...
      Code:
      <xsl:output ... doctype-system="about:legacy-compat"/>
    • h1 elements are disallowed within the head element; use the (required) title element instead.
    • The border attribute is non-conforming. Use CSS:
      Code:
      <style>
      	table, th, td { border: 2px solid; }
      </style>
    For every complex problem, there is an answer that is clear, simple, and wrong.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •