Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old March 10th, 2009, 11:36 PM
Authorized User
 
Join Date: Mar 2009
Posts: 13
Thanks: 0
Thanked 0 Times in 0 Posts
Question How to strip out CDATA from xml with XSLT

How to strip out CDATA (marked in pink color) from xml document so the output should not include<![CDATA[]] and my xml input is:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="soap2.xsl"?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:Action>http://www.sampleproject.com/webservice/BusinessServices/CreateWorkspaceResponse</wsa:Action>
<wsa:MessageID>uuid:59e55139-1062-4f42-8509-d9218d76daeb</wsa:MessageID>
<wsa:RelatesTo>uuid:2af90059-eb06-4762-8de8-c8ea72b0fc70</wsa:RelatesTo>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-4e49cb36-9397-43a0-b62e-ddb2098abd43">
<wsu:Created>2009-02-28T00:17:01Z</wsu:Created>
<wsu:Expires>2009-02-28T00:22:01Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<CreateWorkspaceResponse xmlns="http://www.sampleproject.com/webservice/BusinessServices">
<CreateWorkspaceResult>
<![CDATA[<ep:Response xmlns:ep="www.sampleproject.com/response" success="True" timeStamp="20090228T12:17:01.000" >
<ep:Workspace id="d815952d-5f0b-4dd9-9a3a-5a067adb2914" lastModified="2/27/2009 4:17 PM" >
<ep:Title>SA_ProjCreate_WS_CusFld_0227</ep:Title>
<ep:WorkspaceType id="eba14bec-1be9-465b-af8b-2d9f7aff4b3e" >
<ep:Title>Full Service</ep:Title>
</ep:WorkspaceType>
<ep:field type="native" name="Summary" mayEdit="yes" ></ep:field>
<ep:field type="native" name="ApprovalStatus" mayEdit="no" >NotRequired</ep:field>
<ep:field type="native" name="Budget" mayEdit="yes" >0</ep:field>
<ep:field type="native" name="CreatedOn" mayEdit="no" >2/27/2009</ep:field>
<ep:field type="native" name="StartDate" mayEdit="yes" >2/27/2009</ep:field>
<ep:field type="native" name="EndDate" mayEdit="yes" >3/10/2009</ep:field>
<ep:field type="native" name="Health" mayEdit="yes" >OnPlan</ep:field>
<ep:field type="native" name="Owner" mayEdit="no" >Suhel Ahmed</ep:field>
<ep:field type="native" name="PercentComplete" mayEdit="no" >0</ep:field>
<ep:field type="native" name="Priority" mayEdit="yes" >Medium</ep:field>
<ep:field type="native" name="Budget" mayEdit="no" >0</ep:field>
<ep:field type="native" name="TotalBudget" mayEdit="no" >0</ep:field>
<ep:field type="native" name="PlannedCostFromTasks" mayEdit="no" >0</ep:field>
<ep:field type="native" name="TotalActualCost" mayEdit="no" >0</ep:field>
<ep:field type="native" name="TotalMinutesWorked" mayEdit="no" >0</ep:field>
<ep:field type="custom" name="SalesForceID" mayEdit="yes" id="359e1a31-ebaa-4ef9-b540-1556c0a1b206" >666</ep:field>
<ep:field type="custom" name="Client" mayEdit="yes" id="d0d69a76-573e-4534-b135-826753ed60aa" ></ep:field>
<ep:field type="custom" name="Region" mayEdit="yes" id="a0d96369-ad6f-4096-b11e-151b508d2030" >GMI</ep:field>
<ep:field type="custom" name="ProductType" mayEdit="yes" id="2ece64e9-ecbc-46dc-8e7b-fe6ba81dfb39" ></ep:field>
</ep:Workspace>
</ep:Response>]]>
</CreateWorkspaceResult>
</CreateWorkspaceResponse>
</soap:Body>
</soap:Envelope>
 
Old March 11th, 2009, 10:29 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

First of all the XSLT/XPath data model does not know any CDATA section nodes, it only knows text nodes, whether they are marked up as simple text or as CDATA does not matter and can not be distinguished in your XSLT stylesheet.
What you can do however is remove the contents of that 'CreateWorkspaceResult' element:
Code:
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0"
  xmlns:bs="http://www.sampleproject.com/webservice/BusinessServices"
  exclude-result-prefixes="bs">

  <xsl:template match="@* | node()">
     <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
     </xsl:copy>
  </xsl:template>

  <xsl:template match="bs:CreateWorkspaceResult">
     <xsl:copy>
       <xsl:apply-templates select="@*"/>
     </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
 
Old March 12th, 2009, 12:33 AM
Authorized User
 
Join Date: Mar 2009
Posts: 13
Thanks: 0
Thanked 0 Times in 0 Posts
Exclamation

Thx for your help but i need the o/p like this :

when i use this xslt i got the o/p like this:

http://www.samplepeoject.com/webservice/BusinessServices/CreateWorkspaceResponseuuid:59e55139-1062-4f42-8509-d9218d76daebuuid:2af90059-eb06-4762-8de8-c8ea72b0fc70http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous2009-02-28T00:17:01Z2009-02-28T00:22:01Z<ep:Response xmlns:ep="www.samplepeoject.com/response" success="True" timeStamp="20090228T12:17:01.000" > <ep:Workspace id="d815952d-5f0b-4dd9-9a3a-5a067adb2914" lastModified="2/27/2009 4:17 PM" > <ep:Title>SA_ProjCreate_WS_CusFld_0227</ep:Title> <ep:WorkspaceType id="eba14bec-1be9-465b-af8b-2d9f7aff4b3e" > <ep:Title>Full Service</ep:Title> </ep:WorkspaceType> <ep:field type="native" name="Summary" mayEdit="yes" ></ep:field> <ep:field type="native" name="ApprovalStatus" mayEdit="no" >NotRequired</ep:field> <ep:field type="native" name="Budget" mayEdit="yes" >0</ep:field> <ep:field type="native" name="CreatedOn" mayEdit="no" >2/27/2009</ep:field> <ep:field type="native" name="StartDate" mayEdit="yes" >2/27/2009</ep:field> <ep:field type="native" name="EndDate" mayEdit="yes" >3/10/2009</ep:field> <ep:field type="native" name="Health" mayEdit="yes" >OnPlan</ep:field> <ep:field type="native" name="Owner" mayEdit="no" >Suhel Ahmed</ep:field> <ep:field type="native" name="PercentComplete" mayEdit="no" >0</ep:field> <ep:field type="native" name="Priority" mayEdit="yes" >Medium</ep:field> <ep:field type="native" name="Budget" mayEdit="no" >0</ep:field> <ep:field type="native" name="TotalBudget" mayEdit="no" >0</ep:field> <ep:field type="native" name="PlannedCostFromTasks" mayEdit="no" >0</ep:field> <ep:field type="native" name="TotalActualCost" mayEdit="no" >0</ep:field> <ep:field type="native" name="TotalMinutesWorked" mayEdit="no" >0</ep:field> <ep:field type="custom" name="SalesForceID" mayEdit="yes" id="359e1a31-ebaa-4ef9-b540-1556c0a1b206" >666</ep:field> <ep:field type="custom" name="Client" mayEdit="yes" id="d0d69a76-573e-4534-b135-826753ed60aa" ></ep:field> <ep:field type="custom" name="Region" mayEdit="yes" id="a0d96369-ad6f-4096-b11e-151b508d2030" >GMI</ep:field> <ep:field type="custom" name="ProductType" mayEdit="yes" id="2ece64e9-ecbc-46dc-8e7b-fe6ba81dfb39" ></ep:field> </ep:Workspace> </ep:Response>

As you can see in the above o/p, the data in the <soap:header> coming as text(highlighted in pink) but not as a nodes/elements.my required o/p is:


<?xml-stylesheet type="text/xsl" href="Successful_Creatsamplepeoject_Res.xsl"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:Action>http://www.samplepeoject.com/webservice/BusinessServices/CreateWorkspaceResponse</wsa:Action>
<wsa:MessageID>uuid:59e55139-1062-4f42-8509-d9218d76daeb</wsa:MessageID>
<wsa:RelatesTo>uuid:2af90059-eb06-4762-8de8-c8ea72b0fc70</wsa:RelatesTo>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-4e49cb36-9397-43a0-b62e-ddb2098abd43">
<wsu:Created>2009-02-28T00:17:01Z</wsu:Created>
<wsu:Expires>2009-02-28T00:22:01Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<CreateWorkspaceResponse xmlns="http://www.samplepeoject.com/webservice/BusinessServices">
<CreateWorkspaceResult>
[<ep:Response xmlns:ep="www.samplepeoject.com/response" success="True" timeStamp="20090228T12:17:01.000" >
<ep:Workspace id="d815952d-5f0b-4dd9-9a3a-5a067adb2914" lastModified="2/27/2009 4:17 PM" >
<ep:Title>SA_ProjCreate_WS_CusFld_0227</ep:Title>
<ep:WorkspaceType id="eba14bec-1be9-465b-af8b-2d9f7aff4b3e" >
<ep:Title>Full Service</ep:Title>
</ep:WorkspaceType>
<ep:field type="native" name="Summary" mayEdit="yes" ></ep:field>
<ep:field type="native" name="ApprovalStatus" mayEdit="no" >NotRequired</ep:field>
<ep:field type="native" name="Budget" mayEdit="yes" >0</ep:field>
<ep:field type="native" name="CreatedOn" mayEdit="no" >2/27/2009</ep:field>
<ep:field type="native" name="StartDate" mayEdit="yes" >2/27/2009</ep:field>
<ep:field type="native" name="EndDate" mayEdit="yes" >3/10/2009</ep:field>
<ep:field type="native" name="Health" mayEdit="yes" >OnPlan</ep:field>
<ep:field type="native" name="Owner" mayEdit="no" >John AB</ep:field>
<ep:field type="native" name="PercentComplete" mayEdit="no" >0</ep:field>
<ep:field type="native" name="Priority" mayEdit="yes" >Medium</ep:field>
<ep:field type="native" name="Budget" mayEdit="no" >0</ep:field>
<ep:field type="native" name="TotalBudget" mayEdit="no" >0</ep:field>
<ep:field type="native" name="PlannedCostFromTasks" mayEdit="no" >0</ep:field>
<ep:field type="native" name="TotalActualCost" mayEdit="no" >0</ep:field>
<ep:field type="native" name="TotalMinutesWorked" mayEdit="no" >0</ep:field>
<ep:field type="custom" name="SalesForceID" mayEdit="yes" id="359e1a31-ebaa-4ef9-b540-1556c0a1b206" >666</ep:field>
<ep:field type="custom" name="Client" mayEdit="yes" id="d0d69a76-573e-4534-b135-826753ed60aa" ></ep:field>
<ep:field type="custom" name="Region" mayEdit="yes" id="a0d96369-ad6f-4096-b11e-151b508d2030" >GMI</ep:field>
<ep:field type="custom" name="ProductType" mayEdit="yes" id="2ece64e9-ecbc-46dc-8e7b-fe6ba81dfb39" ></ep:field>
</ep:Workspace>
</ep:Response>
</CreateWorkspaceResult>
</CreateWorkspaceResponse>
</soap:Body>
</soap:Envelope>


let me know ASAP.

thanks.
 
Old March 12th, 2009, 10:08 AM
Friend of Wrox
 
Join Date: Feb 2009
Posts: 119
Thanks: 25
Thanked 3 Times in 3 Posts
Default

He is doing a client side transformation (chaining the xsl to the xml) and outputing the results to the browser, which get shown as text/html
 
Old March 12th, 2009, 10:39 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

Unfortunately your post says "i need the o/p like this :" but does not show anything.
What the suggested stylesheet does is remove any contents from the 'CreateWorkspaceResult' element. If you don't want to remove the contents but rather want to transform the escaped markup in the CDATA section into nodes in the result tree then one way to achieve that is the disable-output-escaping way already suggested. You should note however that that is an optional serialization feature not supported by any XSLT processor in all settings. For instance Firefox/Mozilla's XSLT processor does not serialize at all and therefore does not support disable-output-esacaping.
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
 
Old March 12th, 2009, 11:10 PM
Authorized User
 
Join Date: Mar 2009
Posts: 13
Thanks: 0
Thanked 0 Times in 0 Posts
Exclamation

Here my i/p and o/p both should be xml and both contents of i/p and o/p are same except that <![CDATA[]] stripped out from o/p.
my i/p is:

<?xml-stylesheet type="text/xsl" href="Successful_Creatsamplepeoject_Res.xsl"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:Action>http://www.samplepeoject.com/webservice/BusinessServices/CreateWorkspaceResponse</wsa:Action>
<wsa:MessageID>uuid:59e55139-1062-4f42-8509-d9218d76daeb</wsa:MessageID>
<wsa:RelatesTo>uuid:2af90059-eb06-4762-8de8-c8ea72b0fc70</wsa:RelatesTo>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-4e49cb36-9397-43a0-b62e-ddb2098abd43">
<wsu:Created>2009-02-28T00:17:01Z</wsu:Created>
<wsu:Expires>2009-02-28T00:22:01Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<CreateWorkspaceResponse xmlns="http://www.samplepeoject.com/webservice/BusinessServices">
<CreateWorkspaceResult>
<![CDATA[<ep:Response xmlns:ep="www.samplepeoject.com/response" success="True" timeStamp="20090228T12:17:01.000" >
<ep:Workspace id="d815952d-5f0b-4dd9-9a3a-5a067adb2914" lastModified="2/27/2009 4:17 PM" >
<ep:Title>SA_ProjCreate_WS_CusFld_0227</ep:Title>
<ep:WorkspaceType id="eba14bec-1be9-465b-af8b-2d9f7aff4b3e" >
<ep:Title>Full Service</ep:Title>
</ep:WorkspaceType>
<ep:field type="native" name="Summary" mayEdit="yes" ></ep:field>

</ep:Workspace>
</ep:Response>]]>
</CreateWorkspaceResult>
</CreateWorkspaceResponse>
</soap:Body>
</soap:Envelope>


o/p should be:


<?xml-stylesheet type="text/xsl" href="Successful_Creatsamplepeoject_Res.xsl"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:Action>http://www.samplepeoject.com/webservice/BusinessServices/CreateWorkspaceResponse</wsa:Action>
<wsa:MessageID>uuid:59e55139-1062-4f42-8509-d9218d76daeb</wsa:MessageID>
<wsa:RelatesTo>uuid:2af90059-eb06-4762-8de8-c8ea72b0fc70</wsa:RelatesTo>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-4e49cb36-9397-43a0-b62e-ddb2098abd43">
<wsu:Created>2009-02-28T00:17:01Z</wsu:Created>
<wsu:Expires>2009-02-28T00:22:01Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<CreateWorkspaceResponse xmlns="http://www.samplepeoject.com/webservice/BusinessServices">
<CreateWorkspaceResult>
<ep:Response xmlns:ep="www.samplepeoject.com/response" success="True" timeStamp="20090228T12:17:01.000" >
<ep:Workspace id="d815952d-5f0b-4dd9-9a3a-5a067adb2914" lastModified="2/27/2009 4:17 PM" >
<ep:Title>SA_ProjCreate_WS_CusFld_0227</ep:Title>
<ep:WorkspaceType id="eba14bec-1be9-465b-af8b-2d9f7aff4b3e" >
<ep:Title>Full Service</ep:Title>
</ep:WorkspaceType>
<ep:field type="native" name="Summary" mayEdit="yes" ></ep:field>

</ep:Workspace>
</ep:Response>
</CreateWorkspaceResult>
</CreateWorkspaceResponse>
</soap:Body>
</soap:Envelope>

i want the o/p as xml not as txt/html.


Thanks,
XSL USER.
 
Old March 13th, 2009, 10:33 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

Try whether
Code:
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0"
  xmlns:bs="http://www.sampleproject.com/webservice/BusinessServices"
  exclude-result-prefixes="bs">

  <xsl:template match="@* | node()">
     <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
     </xsl:copy>
  </xsl:template>

  <xsl:template match="bs:CreateWorkspaceResult">
     <xsl:copy>
       <xsl:value-of select="." disable-output-escaping="yes"/>
     </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
works with your XSLT processor.
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
 
Old March 15th, 2009, 10:45 PM
Authorized User
 
Join Date: Mar 2009
Posts: 13
Thanks: 0
Thanked 0 Times in 0 Posts
Smile

I didn't get the desired o/p but thanks for your help & support.
 
Old March 16th, 2009, 08:03 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

Well which XSLT processor do you use, how do you run the transformation?
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
 
Old March 16th, 2009, 11:18 PM
Authorized User
 
Join Date: Mar 2009
Posts: 13
Thanks: 0
Thanked 0 Times in 0 Posts
Post

I used XSLT 1.0 and running xslt transformations on the browser.





Similar Threads
Thread Thread Starter Forum Replies Last Post
strip html tags with xslt smiter XSLT 4 June 19th, 2012 08:34 AM
How to strip out the CDATA from xml using xsl transformations XSLUSer XML 3 April 23rd, 2009 01:01 PM
How to strip out the CDATA from xml using xsl transformations XSLUSer XSLT 1 March 12th, 2009 10:01 AM
How to strip out the CDATA from xml using xsl transformations XSLUSer XSLT 0 March 10th, 2009 11:10 PM
CDATA Section using XSLT misanaka XSLT 2 March 29th, 2007 06:53 PM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.