[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] how to remove a "wrapper" element?
Hi. My xml (as mentioned is posts of yore) uses the following basic structure: <process_steps> <step/> <step/> <step/> </process_steps> To make authoring easier, the powers that be have added a "wrapper" element to the dtd/xml structure as follows: <process_steps> <step> <substeps> <step/> <step/> </substeps> </step> </process_steps> I've been using a stylesheet (built from much input from this list, especially Americo), that serves everything up in a very nice table, numbered outline, indented, etc. QUESTION: How would I apply a template to remove the <substeps> element BEFORE the <steps> are used in the table structure so that it doesn't throw everything off? Sorry for the length, but I've included the stylesheet, a working example, and an example with the <substeps>. Thank you. Kathy ****************XSL*********** <?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <!-- ========================================================= --> <!-- Standard On-Line Work Instruction Stylesheet 6/12/03 --> <!-- ========================================================= --> <xsl:template match="/"> <html> <head> <style type="text/css"> bgcolor="#FFFFFF" h1 {font-family: Verdana;color: blue;font-size:20pt font-weight:bold;margin-top:0;margin-bottom:0} h2 {font-family: Verdana;color: red;font-size:18pt font-weight:bold;margin-top:0;margin-bottom:0} h3 {font-family: Verdana;color: white;font-size:14pt;font-weight:bold;margin-top:0;margin-bottom:0} body {font-family: Verdana;color: black;font-size:12pt} p {font-family: Verdana;color: black;font-size:12pt} h4 {font-family: Verdana;color: white;font-size:12pt;font-weight:bold;text-transform: uppercase;margin-top:0;margin-bottom:0} h5 {font-family: Verdana;color: white;font-size:12pt;font-weight:bold;margin-top:0;margin-bottom:0} h6 {font-family: Verdana;color: black;font-size:12pt;font-weight:bold;margin-top:0;margin-bottom:0} </style> <title>Example of XSLT</title> </head> <body> <h1><xsl:value-of select="/work_instruction/title"/></h1> <form method="POST"> <xsl:apply-templates/> </form> </body> </html> </xsl:template> <xsl:template match="safety"> <table border="1" width="100%" cellpadding="4"> <tr bgcolor="red" valign="middle"> <th colspan="2" align="left"> <h3>SAFETY</h3> </th></tr> <xsl:apply-templates select="numbered_list/listitem" mode="safety" /> </table> <br /> </xsl:template> <xsl:template match="listitem" mode="safety"> <tr><td> <table border="0"> <tr> <td valign="top"><xsl:number level="multiple" format="1. " count="listitem" /> </td> <td valign="top"><xsl:apply-templates/></td> </tr> </table> </td></tr> </xsl:template> <xsl:template match="tools_materials"> <table border="1" width="100%" cellpadding="4"> <tr bgcolor="orange" valign="middle"> <th colspan="3" align="left"> <h3>TOOLS AND MATERIALS</h3> </th></tr> <tr><td><b>Tool/Material</b></td><td align="center"><b>Jabil Part No.</b></td> </tr> <xsl:apply-templates select="numbered_list/listitem" mode="tools_materials" /> </table> <br /> </xsl:template> <xsl:template match="listitem" mode="tools_materials"> <tr><td> <table border="0"> <tr> <td valign="top"><xsl:number level="multiple" format="1. " count="listitem" /> </td> <td valign="top"><xsl:apply-templates/></td> </tr> </table> <td valign="top"> </td> </td></tr> </xsl:template> <xsl:template match="process_steps"> <table border="1" width="100%" cellpadding="4"> <tr bgcolor="blue" valign="middle"> <th align="left" colspan="4"> <h3>PROCESS STEPS</h3> </th> <tr bgcolor="green" valign="middle"> <td align="center" valign="top"> <input type="button" name="Start" value="START"></input></td> <td align="left"><font color="white"><b>Click the START button to begin the work instruction.</b></font></td></tr> <xsl:apply-templates/> </tr> <tr bgcolor="red" valign="middle"> <td align="center" valign="top"> <input type="button" name="Finish" value="FINISH"></input></td> <td align="left"><font color="white"><b>Click the FINISH button when work instruction is complete.</b></font></td></tr> </table> </xsl:template> <xsl:template match="step"> <xsl:variable name="space" select="(count(ancestor::step) * 12 + 1) * 7"/> <tr onMouseOver="this.bgColor = '#00FFFF'" onMouseOut ="this.bgColor = '#FFFFFF'" > <td align="center" valign="top"> <!-- xsl:apply-templates select="@timer[.='yes']"/ --> <xsl:attribute name="Anomaly"></xsl:attribute> <input type="button" value="Anomaly"></input> </td> <td valign="top"> <table width="100%" border="0" cellpadding="0"> <tr> <td valign="top" width="{$space}"> <table border="0" cellpadding="0"> <tr> <td valign="top" width="{$space}">  </td> <td valign="top"> <xsl:number level="multiple" count="step" format="1.1"/> <xsl:if test="not(ancestor::step)"> <xsl:text>.</xsl:text> </xsl:if> <xsl:text>  </xsl:text> </td> </tr> </table> </td> <td> <xsl:apply-templates select="*[not(self::step)]"/> </td> </tr> </table> </td> </tr> <xsl:apply-templates select="step"/> </xsl:template> <xsl:template match="@timer"> <xsl:if test=".='yes'"> <xsl:attribute name="Start"></xsl:attribute> <input type="button" value="Start"></input> <xsl:attribute name="Finish"></xsl:attribute> <td align="center" valign="top"> <input type="button" value="Finish"></input></td> </xsl:if> <td align="center" valign="top"> <xsl:attribute name="Anomaly"></xsl:attribute> <input type="button" value="Anomaly"></input></td> </xsl:template> <xsl:template match="para"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="measure"> <input type="text" name="@name" value="{.}"/>   <input type="button" value="Verify"/> </xsl:template> <xsl:template match="unordered_list"> <table align="left"><br /> <xsl:apply-templates select="listitem" mode="ul"/></table> </xsl:template> <xsl:template match="listitem" mode="ul"> <tr><td valign="top">•</td> <td valign="top"><xsl:apply-templates select="."/></td></tr> </xsl:template> <!-- format and set html tags for subelements --> <xsl:template match="warning"> <table> <tr bgcolor="red" valign="middle"> <td> <h4>WARNING: <xsl:value-of select="."/></h4> </td><xsl:apply-templates select="warning"/> </tr> </table> </xsl:template> <xsl:template match="caution"> <table> <tr bgcolor="blue" valign="middle"> <td> <h5>CAUTION: <xsl:value-of select="."/></h5> </td><xsl:apply-templates select="caution"/> </tr> </table> </xsl:template> <xsl:template match="note"> <table> <tr bgcolor="yellow" align="middle"> <td> <h6>Note: <xsl:value-of select="."/></h6> </td><xsl:apply-templates select="note"/> </tr> </table> </xsl:template> <xsl:template match="emphasis"> <b><xsl:apply-templates/></b> </xsl:template> <xsl:template match="link"> <a target="_blank" href="{@url}"><xsl:apply-templates/></a> </xsl:template> <!-- Remove the Title element from content --> <xsl:template match="title"/> </xsl:stylesheet> ********XML without <substeps>*************** <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="KB_test.xsl"?> <work_instruction revision="B" doc_control_no="10-MS30-1000-037-B" dept="10-ME30"> <title>EKRA E5 Screen Printer WI</title> <safety> <numbered_list> <listitem><para>Static prevention straps and lab coats must be worn at all times.</para></listitem> <listitem><para>Vinyl disposable gloves must be worn when handling solder paste and cleaning stencil and squeegee blades.</para></listitem> <listitem><para>Cotton gloves <emphasis>must be worn</emphasis> when handling bare boards to load into the Board Loader machine prior to printing.</para></listitem> </numbered_list> </safety> <tools_materials> <numbered_list> <listitem><para>Solder Paste - See Product Setup Sheet</para></listitem> <listitem><para>Squeegee Blades - See Product Setup Sheet</para></listitem> </numbered_list> </tools_materials> <process_steps> <step timer="no"><para>Switching ON the E5 Screen Printer.</para> <step timer="no"><para>Rotate the Main Switch located on the left side of the machine to the ON position. (This will supply power to both the machine and operator PCs.)</para> </step> <step timer="no"><para>Allow machine computer and operator computer to initialize. (The Main Menu appears on the screen. The machine program that was last active is loaded automatically. The front cover is unlocked.)</para> </step> <step timer="no"><para>Enter <emphasis>test measurement</emphasis>: <measure/></para> </step> <step timer="no"><para>Use the arrow keys to select the CONTROL menu item. Press the ENTER key. (The control unit is switched on; the status field changes to green).</para> </step> <step timer="no"><para>Use the arrow key to select the REFERENCE-DRIVE menu item. Press the ENTER key. (The field flashes green during reference-drive process and remains green after. All the motors, except the transport width motor, perform a reference drive).</para><para>THIS IS TO TEST THE SUBSEQUENT PARA TEMPLATE.</para> </step> <step timer="no"><para>Setup.</para> <step timer="no"><para>Use the arrow key to select the FILE menu item. Press the ENTER key. (Pop-Up window with a list of available programs displays).</para> <step timer="no"><para>This is to test the third level STEP.</para></step> </step> <step timer="no"><para>Use the up and down arrow keys to select the file for the board you want to print, then using left and right arrow keys select the LOAD field. Press the ENTER key. (Screen: NAME OF PROGRAM: LOAD PROGRAMME? YES / NO.)</para> </step> </step> </step> </process_steps> </work_instruction> ******XML with <substeps>******* <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="KB_substeps_test.xsl"?> <!DOCTYPE jabil SYSTEM "C:\Program Files\Epic\custom\doctypes\Jabil\Jabil.dtd"> <?Pub Inc?> <jabil> <work_instruction revision="D" doc_control_no="10-MS30-1000-016" dept="10-MS30"> <title>Operation of the Universal HSP 4796 Machine</title> <safety> <numbered_list> <listitem><para>Static prevention straps and lab coats must be worn at all times.</para></listitem> </safety> <tools_materials> </tools_materials> <process_steps> <step><para>As illustrated in <link url="\\bospubv02\!general\workinstructions\images\10-MS30-1000-016-1.gif">Fi gure 1</link>, the following describes the HSP 4796 machine.</para> <substeps> <step><para>Power Breaker Crank is on the front left corner of the machine. This switch controls electrical power to the machine.</para> </step> <step><para>The FOUR TIER LAMP assembly is mounted on top of the machine and is used to signal an operator of machine conditions. For example, the red light can be illuminated for all machine stop conditions and the yellow light can be illuminated for all feeder low conditions.</para> </step> <step><para>Use the EMERGENCY STOP PALM switch to immediately stop the machine. The Emergency Stop palm switch controls power to the servo axes. Do not use the Emergency Stop switch for routine machine stops.</para> <para>To disable power to the servo axes, push the emergency stop switch down. This action is known as palming-down the machine.</para> <para>To enable power to the servo axes, turn the emergency stop switch clockwise and push the ON button.</para> </step> <step><para>Feeder Carriages C1 (left side) and C2 (right side) are where all the feeders are mounted on the machine.</para> </step> <step><para>Operation Control Panel (<link url="\\bospubv02\!general\workinstructions\images\10-MS30-1000-016-2.gif">Fi gure 2</link>):</para> <substeps> <step><para><emphasis>Power On (PB1)</emphasis> Supplies power for the machine. With Main Breaker on, and all emergency stops released, press and hold down Power On button, until illuminated, to turn on machine.</para> </step> <step><para><emphasis>Power Off E-Stop (PB3)</emphasis> Pushing in the E-stop immediately shuts off power and air supply to the machine.</para> </step> <step><para><emphasis>Operation/Set-up Key</emphasis> When the "Operation" Key is changed to "Set-Up" mode, interlock functions of the safety doors are disabled. This key should ALWAYS be in operation mode unless otherwise instructed by Engineering or Machine support personnel.</para> </step> <step><para><emphasis>Start Button (PB5)</emphasis> Starts automatic operation of the machine. When illuminated, indicates the machine is in automatic run mode.</para> </step> <step><para><emphasis>Stop Button (PB8)</emphasis> Stops automatic operation of the machine. When pressed, the machine will complete building the current board and then halt production.</para> </step> <step><para><emphasis>Pause Button (PB7)</emphasis> Pauses automatic operation of the machine. When pressed, the machine will finish the current placement action and then stop.</para> </step> <step><para><emphasis>Reset Button (PB9)</emphasis> Releases an error condition on the machine after the "Clear Alarm" button is pressed on the touch screen.</para> </step> <step><para><emphasis>Move Button (PB6)</emphasis> Used to execute a function indicated on the touch screen.</para> </step> <step><para><emphasis>Zero Button (PB11)</emphasis> Used to zero all devices on the machine.</para> </step> <step><para><emphasis>Transfer Button (PB12)</emphasis> Transfers a PCB on a conveyor to the next conveyor position.</para> </step> <step><para><emphasis>SYS Clear Button (PB10)</emphasis> Pressing the System Clear button will re-boot machine software. All axis will return to origin position and the current running program will be reset to the beginning.</para> </step> <step><para><emphasis>PNL Change Button (PB13)</emphasis> Activates operator panel control to the front or rear of the machine. When pressed while already illuminated, control is "locked" to that side of the machine and controls can not be accessed from the other side.</para> </step> <step><para><emphasis>Lock Lamp (LED7)</emphasis> When illuminated, indicates that a control panel has been locked by an operator.</para> </step> <step><para><emphasis>Buzzer (BZ1)</emphasis> Sounds an alarm when an error condition occurs.</para> </step> </substeps> </step> </substeps> </step> </process_steps> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|