Subject: RE: Finding a String and adding a line
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 12 May 2005 11:57:01 +0100
|
This isn't a valid match pattern:
<xsl:template match='BUSINESS_UNIT type="CHAR"/' >
Perhaps what was intended was
<xsl:template match='BUSINESS_UNIT[@type="CHAR"]' >
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: rick.fraser@xxxxxx [mailto:rick.fraser@xxxxxx]
> Sent: 12 May 2005 11:22
> To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: Finding a String and adding a line
>
> Hi
>
> I am completely new to this and have to solve a problem at
> work - the XSLT is actually in a product called PeopleSoft,
> but I am using Xray to try to solve my problem.
>
> I have a piece of code that someone has written (and no
> longer around) - It in itself is not wrong but when the XML
> gets to the destination it expects more and aborts.
>
>
> The XML input is something like:
>
> <?xml version="1.0"?>
> <BT_CONTRACT_PERSON_SYNC>
> <FieldTypes>
> <BT_PROV_SYNC class="R">
> <PERSON_ID type="CHAR"/>
> <BUSINESS_UNIT type="CHAR"/>
> <COUNTRY type="CHAR"/>
> </BT_PROV_SYNC>
> <SPB_PERSON_TBL class="R">
> <PERSON_ID type="CHAR"/>
> </SPB_PERSON_TBL>
> </FieldTypes>
> <MsgData>
> <Transaction>
> <BT_PROV_SYNC class="R">
> <PERSON_ID>600026615</PERSON_ID>
> <BUSINESS_UNIT>00001</BUSINESS_UNIT>
> <COMPANY>503</COMPANY>
> <COUNTRY>GBR</COUNTRY>
> </BT_PROV_SYNC>
> <SPB_PERSON_TBL class="R">
> <PERSON_ID>600026615</PERSON_ID>
> </SPB_PERSON_TBL>
> </Transaction>
> </MsgData>
> </BT_CONTRACT_PERSON_SYNC>
>
>
> The line <COMPANY>... has been successfully added by the
> XSLT, but the destination expects a corresponding entry in
> the <FieldTypes> list, after <BUSINESS_UNIT type="CHAR"/>.
>
> The line <COMPANY type="CHAR"/> has to be added.
>
> Here is a cut-down version of the XSLT:
>
>
> <?xml version="1.0"?>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
> <xsl:template match="BT_CONTRACT_PERSON_SYNC">
> <BT_CONTRACT_PERSON_SYNC>
> <xsl:copy-of select="FieldTypes"/>
> <MsgData>
> <!-- Transaction -->
> <xsl:apply-templates select="MsgData/Transaction"/>
> <!-- /Transaction -->
> </MsgData>
> </BT_CONTRACT_PERSON_SYNC>
>
> </xsl:template>
> <xsl:template match="MsgData/Transaction">
> <Transaction>
> <xsl:apply-templates select="BT_PROV_SYNC"/>
> <xsl:copy-of select="SPB_PERSON_TBL"/>
> <xsl:copy-of select="PSCAMA"/>
> </Transaction>
> </xsl:template>
>
> <xsl:template match="BT_PROV_SYNC">
> <xsl:copy>
> <xsl:attribute name="class"> <xsl:value-of
> select="@class"/> </xsl:attribute>
> <xsl:apply-templates select="node()"/>
> </xsl:copy>
> </xsl:template>
>
>
> <!-inserted code - -->
> <xsl:template match='BUSINESS_UNIT type="CHAR"/' >
> <BUSINESS_UNIT Type="CHAR"/>
> <COMPANY Type="CHAR"/>
> </xsl:template>
> <!-- inserted code end -->
>
> <!-- copy other fields -->
> <xsl:template match="*">
> <xsl:copy-of select="."/>
> </xsl:template>
> </xsl:stylesheet>
>
>
> When I run this through the application or Xray, it fails
> with a message :
>
> Expected token 'EOF' found 'NAME'.
>
> BUSINESS_UNIT -->type<--="CHAR"/
>
>
> So PLEASE, how is it done?
>
>
>
>
|