text:
11 Oct 2010 - Added fpmldb2was.zip in Downloads.
XML's widespread use is prompting programmers to look for effective ways of working with both transient XML messages and persistent XML data. Web services and other software components often generate transient XML messages that contain important business data. Increasingly, applications need to process these messages as well as persistent business artifacts stored in a native XML database management system.
While it's certainly possible to map both transient and persistent XML data to Java objects, doing so can be challenging for heavily nested, complex XML structures. Furthermore, if the schemas for your XML data are likely to change over time, this can introduce added complexity to your application code. The first article in this series introduced a declarative programming approach for working with transient and persistent XML data across the application server and database server tiers to reduce the complexity often associated with imperative programming approaches.
This article dives more deeply into the topic of working with transient and persistent XML in a server-side Java application. By reviewing common application development tasks and sample code, you'll:
- See how to exploit native XML database server technology from Java EE applications that need to effectively integrate transient and persistent XML data.
- Learn how to leverage XML indexing and query filtering capabilities in a database management system to ensure strong runtime performance.
- Review how to join transient and persistent XML data as well as how to update specific portions of persistent XML documents.
Prerequisites and products
Before reading this article, you should be familiar with XML, XPath, and XQuery. See Resources for information about these technologies. In addition, because examples in this article are based on the WebSphere Application Server V7.0 Feature Pack for XML 1.0, you should read Part 1 of this article series. Knowledge of XML database management technology is also helpful. We use DB2® as the XML database server in the examples for this article.
Our application environment and sample database
To explore how server-side Java programmers can work efficiently with transient and persistent XML data, we installed the following software on a single Windows® system:
- Rational Application Developer for WebSphere Software V7.5.5 with the WebSphere Application Server 7.0 test environment
- WebSphere Application Server Feature Pack for XML 1.0 with Fix Pack 220.127.116.11. (This can be used with the stand-alone version of WebSphere Application Server as well as the WebSphere test environment built into Rational Application Developer.)
- DB2 9.7 Enterprise Server Edition
The build path for our Rational Application Developer development project included
appropriate .jar files for the JDBC 4.0 driver in DB2. These are:
db2jcc4.jar and
To use the XML Feature Pack within your project, ensure that you enable
the XML Transformation and Query Project Facet for your project by right
clicking the project, selecting Project Facets, and enabling the facet.
Alternatively, you can add the XML Feature Pack thin client jar (
com.ibm.xml.thinclient_1.0.0.jar) to your build
path. For details on the JDBC 4.0 driver in DB2 or the XML Feature Pack, see Resources.
The database for our examples contains records of over-the-counter (OTC) derivatives trades based on sample XML data provided by the International Swaps and Derivatives Association (ISDA). This data complies with the Financial Products Markup Language (FpML) specification, which is popular with many firms that trade derivatives.
DB2 provides a number of free, industry-specific software downloads to help firms quickly
create and populate a test database that complies with an industry-standard XML format.
One such bundle is available for FpML. We customized this bundle to help us illustrate
certain points in this article; you can download this version using the link in Downloads. If you want to set up the sample database on your Windows system, open a DB2 command window and issue
start.bat. This will create the necessary database objects and load sample FpML data.
Our examples use the FPMLADMIN.FPML43 table, which contains two relational columns (ID and COMMENT) as well as one XML column (DOCUMENT). The XML column stores full FpML records for various types of derivatives trades. It's quite typical for firms to store both relational and XML data in a single table, and our examples reference both types of columns. Figure 1 illustrates the structure of this table.
Figure 1. FPMLADMIN.FPML43 table with two relational columns (ID and COMMENT) and one XML column (DOCUMENT)
FpML records contain highly nested structures with elements and attributes that vary according to the type of trade represented. Figure 2 illustrates a small portion of a sample FpML record for a credit default swap trade.
Figure 2. Partial FpML record for a credit default swap trade
Our sample table contains FpML documents that range in size from 2KB to more than 125KB. Furthermore, the table stores trade documents based on three different versions of the FpML schema in the same XML column. (Specifically, it stores trade documents based on FpML 4.2, 4.3, and 4.7.) XML Schemas tend to evolve over time to accommodate changing business needs, so storing documents that conform to different schemas in a single XML column is a common business requirement.
Querying persistent XML data
Java EE programmers often need to retrieve persistent XML data stored in the database tier and manipulate this data in the application server tier. To demonstrate this, we'll use an example that leverages the XML Feature Pack API and built-in DB2 support for querying XML data. Both offerings support industry standards for querying XML data, including XQuery and XPath expressions.
Because DB2 recognizes and supports XML data as a first-class data type, programmers can work directly with the XML data in its native format rather than work with the data as a large object (LOB). Using XML across multiple software tiers simplifies programming logic and reduces development costs. Furthermore, native XML support in DB2 provides efficient access to specific portions (XML nodes) of a document; large objects do not.
Query Scenario
Consider the situation in which a Java EE application needs to access credit default swap data from a specific trade. If the trade data is passed into the application as a transient XML message, the application can simply use services provided by the XML Feature Pack to execute an XPath expression against the message. Listing 1 defines such an XPath expression.
Listing 1. Using the XML Feature Pack API to work with transient XML
// This XPath expression obtains the credit default swap data for a given trade. // For simplicity, we omitted declaring a specific namespace here. String myXpath = "*:FpML/*:trade/*:creditDefaultSwap; . . .
Not all applications rely on transient XML messages. An application designed to work with a corporate trade portfolio to analyze investment strategies, manage risk, or perform some other business function might need to obtain the desired trade data from a persistent XML repository.
Sample query returning a fragment of persistent XML trade data
Listing 2 illustrates how to use XPath expressions to obtain credit default swap trade data involving a company of interest from a database—in this case, DB2.
Listing 2. SQL/XML query with relational and XML predicates
SELECT XMLQUERY('declare default element namespace "http://www.fpml.org/2009/FpML-4-7"; $fpml/FpML/trade/creditDefaultSwap' passing document as "fpml") FROM fpmladmin.fpml43 WHERE comment LIKE 'cd%' AND XMLEXISTS('declare default element namespace "http://www.fpml.org/2009/FpML-4-7"; $fpml/FpML/trade/creditDefaultSwap/generalTerms/referenceInformation /referenceEntity[entityName="Agrium Inc."]' passing document as "fpml")
This query, which can be executed interactively through a DB2 command-line
interface or graphical query tool, is a standard SQL statement that
invokes two XML-specific functions. The first function,
XMLQUERY(), identifies the data we want returned (the data in
creditDefaultSwap node). The second
XMLEXISTS(), restricts the results to FpML 4.7 documents that reference a specific entity (Agrium Inc.).
Like most SQL statements, this example follows the standard SQL syntax of
SELECT column(s) . . . FROM table(s) . . . WHERE
condition(s). Let's step through this query in more detail and then review a Java coding example that shows how we can invoke this query in an application that also uses the XML Feature Pack.
The first line of the query issues a SQL SELECT statement that invokes an
industry-standard SQL function (
XMLQUERY). When invoking
XMLQUERY(), we first declare the target namespace of interest (
http://www.fpml.org/2009/FpML-4-7). As we discussed earlier, our sample DB2 table contains different versions of FpML records in a single column, and we're only interested in a specific FpML 4.7 record.
After declaring the default namespace to the XMLQuery function, we provide an XPath
expression that specifies the data we want to retrieve (
$fpml/FpML/trade/creditDefaultSwap). The
passing clause that follows the XPath expression specifies that the
$fpml variable represents the DOCUMENT column in our table.
Therefore, the first three lines of Listing 2 indicate that we
want to retrieve only a subset of the FpML 4.7 trade data stored in the DOCUMENT
column. Specifically, we want only credit default swap data, which FpML represents as
an XML node that contains multiple child nodes (see Figure 2). The
FROM clause identifies FPMLADMIN.FPML43 as the table of interest.
The SQL
WHERE clause indicates that we want only results
related to credit default trades. In our sample table, values in the COMMENT column
(a relational column) can be used to isolate the type of trade recorded in the
DOCUMENT column (an XML column). COMMENT values that begin with
cd represent credit default trades.
The remaining lines invoke the industry-standard
function, which restricts the query results to swaps involving a specific corporate entity named
Agrium Inc. Looking at the
XMLEXISTS function more closely, you'll see that it declares an appropriate namespace and includes an XPath expression that the database server will execute against data contained in the DOCUMENT column of the table.
For best runtime performance, Java EE programmers code queries to be as selective
as possible. Our sample query retrieves only the portion of the XML data that we need (in
particular, the
XMLQUERY function obtains only a specific XML
node of the trade document). In addition, our sample query qualifies the rows of
interest by specifying relational and XML predicates in the
WHERE clause. Writing our query in this manner minimizes the amount
of data transferred between the database and application server tiers. (Our example
retrieves a subset of one XML trade record stored in DB2, while a more general query
involving all credit default swap trades would return forty full trade records.) Finally, defining appropriate XML indexes in DB2 can speed runtime query performance, as we'll discuss shortly.
Sample Java EE code for our query scenario
It's not difficult to include this database query in a Java EE application. Let's step through an example that retrieves the desired XML data from the database and manipulates this data in the application server.
Listing 3 shows an excerpt from a servlet that defines the database query that will be executed by an appropriate XML Feature Pack collection resolver.
Listing 3. Java EE application that applies an XQuery program to DB2 pureXML® data read into memory
// Excerpt from our sample servlet. // // First, the servlet sets up the database query. // Here, a String named "getCreditDefaultSwapsByEntityName" will be mapped to our query, // which extracts the creditDefaultSwap node from qualifying trades. dbStatements = new HashMap<String, String>(); dbStatements.put("getCreditDefaultSwapsByEntityName", "select " + "xmlquery("'declare default element namespace " + "\"http://www.fpml.org/2009/FpML-4-7\"; " + "$DOCUMENT/FpML/trade/creditDefaultSwap' ) " + "from fpmladmin.fpml43 " + "where comment like ? and " + "xmlexists("'declare default element namespace " + "\"http://www.fpml.org/2009/FpML-4-7\"; " + "$fpml/FpML/trade/creditDefaultSwap/generalTerms/" + "referenceInformation/referenceEntity[entityName=$name]' " + "passing document as \"fpml\", " + "cast (? as varchar(100)) as \"name\")" ); ... // Next, another method in this servlet creates the XQuery executable. // This method then uses our JDBC resolver to execute it, // providing an appropriate value for the entityName variable. Source source = new Source(FpMLServlet.class.getResource("/getCreditDefaultSwaps.xq").toString()); XQueryExecutable getCreditDefaultSwapsXQ = factory.prepareXQuery(source, staticContext); ... JDBCCollectionResolver inputResolver = new JDBCCollectionResolver(getConnection(), dbStatements); dynamicContext.setCollectionResolver(inputResolver); dynamicContext.bind(new QName("http://com.ibm.xml.samples",entityName"), name); XSequenceCursor output = getCreditDefaultSwapsXQ.execute(dynamicContext);
The query in the first part of Listing 3 is nearly identical to the interactive version in Listing 2. Differences include:
- Parameter markers, denoted by the question mark character (?), replace hard-coded predicate values to allow for greater flexibility.
- Double quotes are properly escaped.
With a named query properly defined, the application can execute the query and apply business logic to the returned results. For simplicity, the business logic shown in this example merely obtains the coupon rate and other corporate bond information associated with the qualifying trades. A production application would contain more complex business logic.
The second portion of the code in Listing 3 contains the logic that obtains the appropriate XML data from the database server and manipulates it in the application server. This coding pattern follows the same approach that Part 1 of this article series introduced as an example (see Resources). First, the application creates an XQuery executable object that the XML Feature Pack will execute against the portion of the XML trade record returned by DB2. Next, the application specifies an appropriate collection resolver. The resolver will connect to the DB2 database and execute the query, passing in an appropriate data value for the query's parameter marker (the name of the referenced entity in the trade).
Our resolver implementation is identical to the resolver described in Listing 8 of Part 1 of this article series, so we won't review it in detail here. This resolver works
with collections that start with a
jdbc:// URI scheme. It uses
named queries to resolve the remainder of the URI and executes appropriate logic.
This resolver, like the rest of the sample code discussed in this article, is
available for download. See Downloads for the
Note that the resolver design used here is based on an example that ships with the XML Feature Pack and represents only one way of providing access to a native XML database (such as DB2 pureXML). If you want to use this code in a production application, you should modify or extend the sample as needed. In addition, Part 1 of this article series briefly discusses other possible approaches to designing a resolver; for an example, see Listing 14 of that article (see Resources).
Once the appropriate credit default swap data is retrieved from the database, the application can further manipulate the data as desired. Listing 4 shows an XQuery function that executes on the application server, extracting the instrument ID, coupon rate, and maturity date of the corporate bond referenced in each trade returned from the database.
Listing 4. Excerpt from
getCreditDefaultSwaps.xq, an XML Feature Pack XQuery program for obtaining bond information from a trade
declare variable $my:entityName as xs:string external; declare variable $databaseURI := concat('jdbc://getCreditDefaultSwapsByEntityName?cd%&', $my:entityName); declare variable $creditDefaultSwaps := collection($databaseURI); for $bond in $creditDefaultSwaps//fpml:bond return
 { $bond/fpml:instrumentId }	 { $bond/fpml:couponRate }	 { $bond/fpml:maturity }

Creating indexes to improve runtime performance
Now that you understand the logic we followed for retrieving appropriate XML data from the database and manipulating it in the middle tier, let's turn to another topic: performance. To ensure our query would execute efficiently on the database tier, we created two indexes on the FPMADMIN.FPML43 table:
- FPMLADMIN.COMMENTX, which indexes the relational COMMENT column.
- FPMLADMIN.ENTITYNAME, which indexes a specific node in the XML DOCUMENT column.
As you'll see shortly, DB2 can use both of these indexes to generate an efficient access path for our query. Listing 5 shows how to create these indexes. The first statement defines the relational index, and the second defines the XML index.
Listing 5. Creating the relational and XML indexes
create index fpmladmin.commentx on fpmladmin.fpml43(comment) create index fpmladmin.entityname on fpmadmin.fpml43(document) generate key using xmlpattern 'declare default element namespace "http://www.fpml.org/2009/FpML-4-7"; /FpML/trade/creditDefaultSwap/generalTerms/referenceInformation /referenceEntity/entityName' as sql varchar(1000)
We created these indexes because the FPMLADMIN.FPML43 table in the sample database is 4MB and contains nearly 900 rows. Only a small amount of data relates to credit default swaps that reference our target company (Agrium Inc.) as the named entity. DB2 can use both the relational and XML indexes to quickly pinpoint the data of interest, avoiding a costly scan of all rows in the table.
Figure 3 illustrates the access plan that DB2 selected for our query
after we collected appropriate statistical data using the built-in
RUNSTATS facility in DB2. Reading from the bottom up, you'll note that DB2 used both indexes to quickly retrieve the data requested by our sample application.
Figure 3. DB2 uses both relational and XML indexes for efficient data access
For more information about how to view and interpret DB2 data access plans, see Resources.
Querying transient and persistent XML data
The XML Feature Pack also enables you to write XQuery expressions that join transient XML data—perhaps generated by web services or Java applications—with persistent XML data. As you might imagine, there are various ways to achieve this. We'll explore one approach here.
Join scenario
Consider an application that needs to analyze investments in derivatives. One aspect of this application might need to obtain current market data about the firms referenced in credit default swap trades. A simple example of such market data might include information about current stock prices. Assuming we have derivatives trade records stored in DB2 and can obtain stock information from a web service, our application needs to join persistent and transient XML data.
Sample Java EE code for our join scenario
Listing 6 illustrates one way to use the XML Feature Pack to perform the necessary work. We use the same query as in Listing 3 to obtain credit default swap from DB2, so we won't repeat it here. We also use an appropriate resolver to execute the query, much as we did in the previous scenario.
What's new in Listing 6 is the definition of a different XQuery
executable—specifically, an XQuery function that will process the join in the
XML Feature Pack. In addition, Listing 6 creates a
StreamSource object to represent the transient XML data that
will be joined with the appropriate trade data stored in DB2. For simplicity, our
StreamSource is populated with data from a file named
assets.xml, which we use to represent transient market data useful for portfolio analysis. (However, in a production application, this XML data is more likely to originate from a web service or a message queue.)
Listing 6. Java EE application that joins transient and persistent XML data
// Create the XQuery executable. Source source = new Source(FpMLServlet.class.getResource("/joinCreditDefaultSwap.xq").toString()); XQueryExecutable joinCreditDefaultSwapsXQ = factory.prepareXQuery(source, staticContext); ... // Declare the resolver and execute the join. // The resolver will issue the DB2 query, and WebSphere software will join its output // with XML data in the StreamSource object. JDBCCollectionResolver inputResolver = new JDBCCollectionResolver(getConnection(), dbStatements); dynamicContext.setCollectionResolver(inputResolver); StreamSource source = new StreamSource(FpMLServlet.class.getResourceAsStream("/assets.xml")); dynamicContext.bind(new QName("http://com.ibm.xml.samples", "entityName"), name); XSequenceCursor output = joinCreditDefaultSwapsXQ.execute(source, dynamicContext);
Listing 7 shows the contents of the assets.xml file.
Listing 7. Contents of assets.xml, which represents transient XML data in our example
<?xml version="1.0" encoding="UTF-8"?> <assets> <equity> <symbol>AGU</symbol> <name>Agrium Inc.</name> <currency>USD</currency> <high>64.06</high> <low>62.79</low> </equity> <equity> <symbol>STM-FP</symbol> <name>STMicroelectronics N.V.</name> <currency>EUR</currency> <high>6.92</high> <low>7.2</low> </equity> </assets>
Listing 8 contains the XQuery function that joins the transient and persistent XML data.
Listing 8. Excerpt from "joinCreditDefaultSwaps.xq," the XML Feature Pack XQuery program that performs the join
declare variable $my:entityName as xs:string external; declare variable $databaseURI := concat('jdbc://getCreditDefaultSwapsByEntityName?cd%&', $my:entityName); declare variable $creditDefaultSwaps := collection($databaseURI); declare function local:equityRows($root) { for $equity in $root//equity let $referenceEntity := $creditDefaultSwaps//fpml:referenceEntity where $equity/name = $referenceEntity/fpml:entityName return
 { $equity/*:symbol/text() }	 { $equity/*:name/text() }	 { $equity/*:high/text() }	 { $equity/*:currency/text() }
 };

 Ticker Symbol	 Company Name	 High	 Currency
 { local:equityRows(/) }

FOR clause of this function loops through the entity nodes contained in the transient XML data. The
LET clause extracts referenced entity information from the collection of credit default swap data that DB2 returns after executing the named query defined in Listing 6. The
WHERE clause joins the transient and persistent XML data based on asset names. The function returns information in XHTML format about the stock symbol, company name, high sales price, and currency for all firms referenced in the credit default swaps returned from DB2.
When joining transient and persistent XML data, it's important to consider where the join should occur. If one software tier contains a large quantity of data that needs to be joined with a small amount of data that resides on another software tier, it's generally most efficient to perform the join on the tier with the large quantity of data.
Updating persistent XML data
Another common requirement of XML-based Java EE applications involves updating persistent XML data. Part 1 of this article series included a code sample that showed how to replace a persistent XML document with another document held in memory. Full document updates are certainly useful in some situations. However, many applications only need to update portions of an XML document. Let's explore how to do this.
DB2 supports the XQuery Update Facility, a standardized extension to XQuery that enables programmers to update specific XML nodes in a variety of ways. For example, programmers can add new nodes, delete nodes, update the values of elements or attributes, and make other types of updates. Sub-document updates often help improve runtime performance. Programmers simply specify the changes they would like to make to appropriate portions of XML documents. DB2 performs these updates directly on the server, minimizing the application programming logic and transfer of data that otherwise need to occur. By contrast, DBMSs that rely on CLOBs or BLOBs for managing XML require applications to retrieve XML documents from the database, parse these documents, update them as needed, and then write these documents back to the database. If only a small portion of a large XML document needs to be changed, the performance penalty with such an approach can be considerable.
Update scenario
Consider a scenario in which an application needs to change the value of an XML node. For example, two parties involved in a credit default swap trade might renegotiate terms related to the scheduled termination date of the trade, which is represented as a node in the FpML trade record. You need to update the FpML trade record stored in the database to reflect these new terms, which can be passed to a Java EE application as a transient XML message.
For compliance reasons, firms engaged in derivatives trades often represent modified trade records as new records in their databases. For tutorial purposes, we'll show how to modify the original FpML record directly.
Sample sub-document update of persistent XML data
Listing 9 contains an interactive SQL statement that updates XML data in the DOCUMENT column of the FPMLADMIN.FPML43 table.
Listing 9. Updating an XML node of a document stored in DB2
update FPMLADMIN.FPML43 set document = xmlquery ('declare default element namespace "http://www.fpml.org/2009/FpML-4-7"; transform copy $new := $x modify do replace $new/FpML/trade/creditDefaultSwap/generalTerms/scheduledTerminationDate with <scheduledTerminationDate xmlns="http://www.fpml.org/2009/FpML-4-7"> <adjustableDate> <unadjustedDate>2011-05-05</unadjustedDate> <dateAdjustments> <businessDayConvention>FOLLOWING</businessDayConvention> </dateAdjustments> </adjustableDate> <comment>This is new.</comment> </scheduledTerminationDate> return $new' passing document as "x") where comment like 'cd-ex10-long-us-corp-fixreg-47%'and xmlexists('declare default element namespace "http://www.fpml.org/2009/FpML-4-7"; $fpml/FpML/trade/creditDefaultSwap/generalTerms /referenceInformation/referenceEntity[entityName="Agrium Inc."]' passing document as "fpml")
WHERE clause restricts the update to a specific credit default swap trade involving Agrium Inc. Since the logic of this clause is very similar to the logic presented in previous scenarios, we won't review it again here.
The interesting portion of this query is contained in the expression included in the
XMLQuery() function call. After declaring an appropriate default
namespace, this expression copies the original XML document value (see Figure 2) into the
$new variable. The
MODIFY clause replaces the node for the scheduled termination date with a new node. This new node effectively changes the original node in four ways:
- The value of the unadjusted date (a child node) is changed to a new date (May 5, 2011).
- The value of the business day convention (a child node) is modified to "FOLLOWING".
- The child node for business centers is deleted. (As a result, the children of the business centers node are also deleted.)
- A new child node is added for comments.
Finally, the
RETURN clause returns the new node representing the scheduled termination date so that DB2 will update data in the DOCUMENT column with the modified data.
Sample Java EE code for the update scenario
Let's look at how this update operation can be implemented in a Java EE application. As you might imagine, we need to use parameter markers and escape characters when incorporating this query into an application. The first portion of Listing 10 illustrates how we converted the interactive
UPDATE statement (in Listing 9) into a named query in our Java EE application. As in our previous scenarios, this example also relies on a resolver to execute the database operation.
Listing 10. Replacing an XML element using DB2 pureXML
// Define the database query. // In this case, the named query will update part of an FpML trade record. dbStatements = new HashMap<String, String>(); dbStatements.put( "updateScheduledTerminationDateByEnityName", "update fpmladmin.fpml43 set document = " + "xmlquery('" + "declare default element namespace " + "\"http://www.fpml.org/2009/FpML-4-7\"; " + "transform copy $new := $x " + "modify do replace " + "$new/FpML/trade/creditDefaultSwap/generalTerms/scheduledTerminationDate with $d "+ "return $new' " + "passing cast (? as xml) " + "as \"d\", " + "document as \"x\"" + ") " + "where comment like ? and " + "xmlexists(" + "'declare default element namespace " + "\"http://www.fpml.org/2009/FpML-4-7\"; " + "$fpml/FpML/trade/creditDefaultSwap/generalTerms" + "/referenceInformation/referenceEntity[entityName=$name]'" + "passing document as \"fpml\", cast (? as varchar(100)) as \"name\"" + ")" ); ... // Create an XSLT executable and execute it with the JDBC resolver Source source = new Source(FpMLServlet.class.getResource("/updateCreditDefaultSwap.xsl").toString()); XSLTExecutable updateCreditDefaultSwapXSL = factory.prepareXSLT(source, staticContext); ... JDBCResultsResolver resultsResolver = new JDBCResultsResolver(getConnection(), dbStatements); dynamicContext.setResultResolver(resultsResolver); dynamicContext.bind(new QName("http://com.ibm.xml.samples","entityName"),"Agrium Inc."); dynamicContext.bind(new QName("http://com.ibm.xml.samples","tradeType"),"cd-ex10-long%"); dynamicContext.bind(new QName("http://com.ibm.xml.samples","updateOrRestore"),"update"); ... // "newDate" is XML and comes from a non-DB2 XML data source XItemView newDate = getUpdatedTerminationDate(); dynamicContext.bind(new QName("http://com.ibm.xml.samples", "updatedScheduledTermination"), newDate); ... StreamResult result = new StreamResult(servletResponse.getOutputStream()); updateCreditDefaultSwapXSL.execute((Source)null, dynamicContext, result);
Instead of using an XQuery program (as we did in previous scenarios), we used XSLT 2.0 stylesheet in this example. Listing 11 illustrates a portion of our XSLT code.
Listing 11. XSLT for updating a portion of a persistent XML document
<xsl:param name="my:entityName" as="xs:string" /> <xsl:param name="my:tradeType" required="yes" as="xs:string" /> <xsl:param name="my:updateOrRestore" required="yes" as="xs:string" /> <xsl:param name="my:updatedScheduledTermination" as="node()" /> <xsl:variable name="updateCreditDefaultSwapURL" select="concat('jdbc://updateScheduledTerminationDateByEnityName?--XML--&', $my:tradeType, '&', $my:entityName)" /> <xsl:when test="$my:updateOrRestore eq 'update'"> <xsl:result-document href="{$updateCreditDefaultSwapURL}" method="xml" indent="yes"> <xsl:copy-of select="$my:updatedScheduledTermination" /> </xsl:result-document> </xsl:when>
Combining XML and relational data in new XML documents
Java EE programmers who want to obtain an XML-only representation of relational and XML data from the database tier can use DB2's sub-document update support to help them achieve this goal. For example, programmers can write a single statement to enrich XML data with information extracted from relational columns of a table stored in DB2, Oracle, or some other DBMS. This capability can be useful in various situations because it enables programmers to combine XML and relational data across multiple systems. Even though this scenario isn't included in the sample code available for download with this article, the approach to executing such a query is the same as we discussed in previous examples.
To understand how to use DB2's sub-document update support in this manner, imagine that our FpML database includes a traditional relational table that tracks contact information for parties frequently involved in derivatives trades. See Listing 12 for a definition of this table.
Listing 12. Creating the FPMLADMIN.PARTYCONTACTINFO table
FpML trade records often include only limited information about the parties involved in a derivatives trade, yet trade confirmations (contracts) often require more detailed information. As shown in Listing 13, a single DB2 statement can readily transform the relational data into XML elements, insert these elements into appropriate nodes of the XML document, and return a new XML document for processing.
Listing 13. Enriching an FpML trade record with relational data
select xmlquery ('declare default element namespace "http://www.fpml.org/2009/FpML-4-7"; transform copy $new := $message modify for $i in $new/FpML/party return do insert db2-fn:sqlquery("select XMLELEMENT(NAME ""ContactInfo"", XMLELEMENT(NAME ""Address1"", p.ADDRESS1), XMLELEMENT(NAME ""Address2"", p.ADDRESS2), XMLELEMENT(NAME ""CITY"", p.CITY), XMLELEMENT(NAME ""STATE"", p.STATE), XMLELEMENT(NAME ""COUNTRY"", p.COUNTRY), XMLELEMENT(NAME ""PHONE"", p.PHONENO) ) from FPMLADMIN.PARTYCONTACTINFO p where partyId=parameter(1)", $i/partyId/text()) as last into $i return <newroot>{$new}</newroot>' passing F.DOCUMENT as "message") FROM FPMLADMIN.FPML43 f where id=47022
If the relational data resided in a remote DB2 or OEM database, we would simply create a nickname for this remote table in our database. Nicknames represent remote database objects to the local DB2 server and allow programmers to treat these remote objects as though they were local DB2 tables. Thus, the query in Listing 13 remains the same even if underlying data was stored in a remote DB2, Oracle, or other database.
Furthermore, we can easily modify this query to insert this enriched trade data into an
XML column in our DB2 database. All we need to do is include an
INTO . . . clause immediately before the
clause in Listing 13. (We can take a similar approach with the query in Listing 9 if we want to preserve the original trade record and insert the modified trade as a new document in the database.)
In Part 2 of this article series, we illustrated how Java EE programmers can work natively with XML in the application server and database server tiers. Through several sample applications, we processed large amounts of transient and persistent XML data in a server-side Java application using indexing and query filtering capabilities for both XML and relational data. Our examples also showed how to work with subsets of persistent XML data—specifically, how to extract only XML nodes of interest from the database as well as how to update only specific XML nodes within a document. Working with fragments of persistent XML documents avoids unnecessary data transfers between the application and database server tiers and also helps reduce some of the processing that otherwise needs to occur on the application server. Finally, we also illustrated how programmers can join transient and persistent XML data—an increasingly common programming requirement given the popularity of XML across many software components today.
Thanks to Lee Ackerman and Matthias Nicola for reviewing this article. Thanks also to Susan Malaika and her colleagues for their help in developing the DB2 scripts available for download with this article.
|Sample Java code using the XML feature pack
|Sample FpML data and DB2 script
- Programming XML across the multiple tiers, Part 1: Use XML in the middle tier for performance, fidelity, and development ease: Develop an all-XML solution using JDBC 4.0, SQLXML, and the WebSphere Server XML Feature Pack (Andrew Spyker and Bert Van Der Linden, developerworks, March 2010): Learn about a natural and performant approach to working with XML data in the database and the middle tier. In a sample web app, combine XML data across an XML database and Atom services to explore the approach.
- Introduction to XML (Doug Tidwell, developerWorks, August 2002): For an excellent introduction to XML, read this tutorial.
- Query DB2 XML data with XQuery (Don Chamberlin, Cynthia M. Saracco, developerWorks, March 2010): Learn about using XQuery with DB2 pureXML by following several examples in this introductory article.
- An introduction to XQuery (Howard Katz, deveoperWorks, January 2006): Start here to learn about XQuery and follow the links from this article to even more information.
- Get started with XPath: Learn the basics (Bertrand Portier, deveoperWorks, May 2004): In this introduction to XPath, learn what XPath is; the syntax and semantics of the XPath language; how to use XPath location paths; how to use XPath expressions; how to use XPath functions; and how XPath relates to XSLT.
- Getting started with DB2 for Linux, UNIX, and Windows: Get started with information compiled for those less experienced with IBM DB2. In just about two hours, these training materials will prepare you to take a series of self-study tutorials and to download and try IBM DB2 for Linux®, UNIX®, and Windows.
- DB2 pureXML wiki: Check out this wiki for a comprehensive set of links to demos, free downloads, technical papers, and more.
- DB2 pureXML Cookbook (Matthias Nicola and Pav Kumar Chatterjee, IBM Press): Read this comprehensive guide to DB2 pureXML technology for all supported platforms.
- Work with GPX XML data in DB2 9.5 using JDBC (Khurram Farnaaz, Ronny Bartsch, and Susan Malaika, developerWorks, January 2009): Learn more about working with DB2 pureXML and JDBC 4.0.
- Using the SQLXML data type: The Java data type for database type XML (Deepak Vohra, developerWorks, April 2008): Learn to create an XML document, store an XML document in a relational database, retrieve an XML document from a database, and navigate an XML document with the SQLXML Java data type.
- DB2 9.7 Info Center: Visit the complete product documentation for DB2 pureXML for Linux, UNIX, and Windows.
- WebSphere Application Server Feature Pack for XML: Visit the website dedicated to the WebSphere Application Server Feature Pack for XML.
- Information Center for the WebSphere Application Server Feature Pack for XML: Visit the complete product documentation for the WebSphere Application Server Feature Pack for XML.
- IBM WebSphere Application Server V7 Feature Pack for XML Fix Pack 7: Download the XML Feature Pack Fix Pack 22.214.171.124.
- WebSphere Community Blog: Read the community blog.
- Video: Getting started with the WebSphere Application Server Feature Pack for XML: Install the sample application described in this article and get started with the WebSphere Application Server Feature Pack for XML.
- Video: XML Feature Pack and Sample for XML Database Integration Setup (With DB2 pureXML) Part 1 of 2: Configure WebSphere Application Server and DB2 in order to run the blog checker sample application described in this article.
- XML area on developerWorks: Get the resources you need to advance your skills in the XML arena.
- My developerWorks: Personalize your developerWorks experience.
- IBM XML certification: Find out how you can become an IBM-Certified Developer in XML and related technologies.
- XML technical library: See the developerWorks XML Zone for a wide range of technical articles and tips, tutorials, standards, and IBM Redbooks. Also, read more XML tips.
- developerWorks technical events and webcasts: Stay current with technology in these sessions.
- developerWorks on Twitter: Join today to follow developerWorks tweets.
- developerWorks podcasts: Listen to interesting interviews and discussions for software developers.
- developerWorks on-demand demos: Watch demos ranging from product installation and setup for beginners to advanced functionality for experienced developers.
Get products and technologies
- DB2 Express-C: Download the free DB2 Express C edition, which includes pureXML.
- Websphere Application Server: Get IBM WebSphere Application Server for Developers, a fully licensed product available for download at no charge.
- IBM product evaluation versions: Download or explore the online trials in the IBM SOA Sandbox and get your hands on application development tools and middleware products from DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.
- DB2 pureXML forum: Participate in the forum.
- XML zone discussion forums: Participate in any of several XML-related discussions.
- developerWorks blogs: Check out these blogs and get involved.
Dig deeper into XML on developerWorks
- Overview
- New to XML
- Technical library (tutorials and more)
- Forums
- Downloads and products
- Open source projects
- Standards
- Events
developerWorks Premium
Exclusive tools to build your next great app. Learn more.
developerWorks Labs
Technical resources for innovators and early adopters to experiment with.
IBM evaluation software
Evaluate IBM software and solutions, and transform challenges into opportunities.


text:
Baked Green Beans
Total Time
Prep 15 mins
Cook 1 hr
My aunt made these yummy beans at all of our holiday get togethers when I was young. The family doesn't get together very often anymore so I am glad to have her recipe.
Ingredients Nutrition
- 1 (16 ounce) package frozen French-cut green beans, thawed
- 3 slices bacon, crisped and crumbled, reserving 1 TBSP drippings
- 1 beef bouillon cube
- 1 cup hot water
- 1⁄2 teaspoon garlic salt
- 1 pinch black pepper
- Place beans into an ungreased 1 1/2 quart baking dish.
- Stir bacon drippings into beans.
- Dissolve bouillon in water and add garlic salt and pepper.
- Pour over beans.
- Cover and Bake at 350 for 1 hour.
- Top with crumbled bacon.
Most Helpful
These were tasty. I used real bacon bits instead of bacon slices. I used a bit of olive oil instead of bacon grease in the pan. I think next time I will leave the beans a little bit frozen or not cook them as long in the oven as they were a little too soft for my personal tastes. They had great flavor.
A nice alternative to canned beans with bacon on the stove. Full of flavor.
These green beans were delicious. I usually just throw mine in a pot with bacon, but this method really soaked up the flavors. Thanks for a great recipe that my family and I thoroughly enjoyed!

subset: commoncrawl


text:
Interactive Cultural Fluency Workshop for Executive Assistants
One of Aperian Global's most exclusive and highly rated global programs for multinational corporations is now being offered in an abbreviated format! This interactive workshop gives executive assistants the cultural awareness and practical skills they need when working globally.
In this workshop, participants will come away with enhanced skills to:
- Establish professional relationships across time zones
- Communicate in a global & virtual context
- Understand cultural protocol (applied when gift giving, hosting, and receiving guests)
- Navigate hierarchical cultures respectfully
- Get access to our flagship web tool, GlobeSmart®, offering you detailed information on how to conduct business with people from over 60 countries
- Develop an action plan to apply the newly developed skills
- Network with your peers across industries
Who should attend?
- Executive and personal assistants who interact with global colleagues and counterparts and support globally mobile leaders
- Human resource business partners interested in exploring a 'cultural fluency' workshop for their organization
Register Now
- Monday, 11 November, 2013 11am-1pm EST/ 8-10am PST - Register


text:
We are furnishing proxy materials to our stockholders primarily via the Internet. Internet distribution is designed to expedite receipt by stockholders, lower the cost of the annual meeting, and conserve natural resources by reducing the environmental impact of printing and mailing hard copies.
Annual Meeting of Shareholders
October 27, 2015 @ 10:00 a.m. Eastern
PDF Downloads
2015 Proxy Statement (1.21 MB)
FY 2015 Annual Report (3.49 MB)


text:
Skip to Main Content
Subscribe | Give a Gift Subscription
Log In or Register | Help | Contact Us | Donate
Ruminate on the past year, remembering both your achievements and your failures. Write a story about one of your failures or regrets from the perspective of someone other than yourself. Consider rewriting the past, to transform this incident into an achievement by changing the facts around it or by changing the way your protagonist perceives it.
Main Index » Poets & Writers » The Newsletter
Sign up to receive our monthly email newsletter to stay informed of the latest news, events and more.
Subscribe to P&W Magazine |
Donate Now |
Advertise |
Sign up for E-Newsletter |
About Us |
Contact Us
© Copyright Poets & Writers 2011. All Rights Reserved


text:
- Report: #1128688
Report - Rebuttal - Arbitrate
Complaint Review: Maybach Pharma Co
Maybach Pharma Co671 stoneybrook dr Corona, California USA
Maybach Pharma Co Jerson EdmondRick Ross Ripped me off $80.00 on gardening chems CoronaCA, Silver Springs,MD, Ft. Lauterdale,FL California
Ripoff Report
About you?
Ripoff Report
A business' first
line of defense
on the Internet.
If your business is
willing to make a
commitment to
customer satisfaction
Click here now..
Does your business have a bad reputation?
Fix it the right way.
Corporate Advocacy Program™
I sent $80.00 via moneygram to Jerson Edmond and did not recieve my order or a refund was told my order did not meet the minimum order requirements and we needed to send more money. Here is the moneygram info: Jerson Edmond Ft. Lauterdale Florida 33004 Security question: favorite color: green
This report was posted on Ripoff Report on 03/06/2014 08:27 AM and is a permanent record located here: http://www.ripoffreport.com/r/Maybach-Pharma-Co/Corona-California-92879/Maybach-Pharma-Co-Jerson-EdmondRick-Ross-Ripped-me-off-8000-on-gardening-chems-CoronaCA-1128688. The posting time indicated is Arizona local time. Arizona does not observe daylight savings so the post time may be Mountain or Pacific depending on the time of year.
Ripoff Report has an exclusive license to this report. It may not be copied without the written permission of Ripoff Report.
Click Here to read other Ripoff Reports on Maybach Pharma Co
If you would like to see more Rip-off Reports on this company/individual, search here:Search Tips
In order to assure the best results in your search:
- Keep the name short & simple, and try different variations of the name.
- Do not include ".com", "S", "Inc.", "Corp", or "LLC" at the end of the Company name.
- Use only the first/main part of a name to get best results.
- Only search one name at a time if Company has many AKA's.
Advertisers above have met our
strict standards for business conduct.


text:
AskBaby Talk > IVF & Sterilisation Reversal > Getting pregnant after sterilisation reversall part 14
Posted: Fri Aug 02, 2013 6:33 am
Post subject:
Morning Ladies
Sorry could'nt remember old password to get on grrrrr!!!
Sorry not been on for so long but i have a very hectic life atm what with work, Liam, kids being off school etc.... but to top it off our wedding is fast approaching and Steve decided we should should get a bigger house and buy our first home together!!!! YES we found a house and managed to get a mortgage fine and we should be moving in about 4 weeks matter of weeks before the wedding so as you can imagine im feeling very stressed right now!!!
How are you all? hope your all enjoying the holidays xxxx
Posted: Fri Aug 02, 2013 7:52 am
Post subject:
Shelly none of the UK women on here ( in this section or the general section) have been routinely offered HSG's after an ectopic.
I agree with you that it should be done just to check what exactly is going on in there, but even saying that not having the HSG first doesn't increase your risk so try not to worry too much about it, I'd just test again next week if you still feel the same but if you'd rather it was the witch on her way then I'll be hoping for that for you xx
Meesh lovely to hear from you and fantastic news about the house, moving is so exciting (well apart from the packing and the unpacking of course ) at least the kids will be off to help you and not long at all until the wedding either
Are you planning any more reversal babies, there seems to be a boom going on at the moment xx
Posted: Fri Aug 02, 2013 8:11 am
Post subject:
My kids wont help they are so lazy!!! im dreading the move dont mind packing its the unpacking at other end lol
Dont think we will be having anymore even tho oh said im only 33 could try in 2 year sod that a think we have enough with 5 but never say never i guess Hope your well huni, i aint had time to read through old posts yet but will try xxx
Posted: Fri Aug 02, 2013 8:23 am
Post subject:
Yeah I said no more after 5 as well and look what happened there it gets easier as they get older though doesn't it then that broody feeling kicks back in Maybe tell the kids that if you pack their stuff it will give you a chance to have a good clear out that might get them doing it themselves
The unpacking's the worst isn't it, trying to find somewhere to put everything we moved 3 times in 18 months when my OH left the army and it put me off so much we've been here now for 7 yrs and I'm only just starting to get itchy feet again I hope it all goes smoothly for you anyway xx
Posted: Fri Aug 02, 2013 10:32 am
Post subject:
In such a weird mood today I sort of wish I had just got the OPK's early and started doing them so I'd know for sure when my surge started as all my emotions feel so out of tune with were they should be for 7 DPO
It's got me wondering if I ov'd earlier
Have had what seemed like PMS all day today and was a bit moody (grumpy) yesterday, found myself snapping at the OH which is far too early for me for normal PMS which starts more like 9-10 DPO .
I've had chocolate cravings since last week which at first I put down to ov but I still have them now and yet I can't face meals, I've barely had a meal all week but I've stuffed tonnes of chocolate down my face not helping with the diet
I only normally get like this for a few days before AF if at all
This morning I woke up feeling so down I just wanted to cry and thinking what's the point in taking any stuff it's not working anyway absolutely convinced I'm not in with a chance this month which also only normally kicks in at 10 DPO but I'm going to carry on taking everything because it does all take 3 months for maximum effect so no point giving up already and to be fair I only got the Serrapeptase just before I think I ov'd so I've not exactly given it a good shot
My temps not as high as yesterdays first temp as well, which I think has just convinced me I'm wasting my time, but then while I was out earlier I was feeling really sick and now my boobs have started hurting as well which made me get my hopes up again Just wish the 2 ww was shorter
Posted: Tue Aug 06, 2013 7:15 am
Post subject:
Argggghhhhhhh, Argggghhhhhh, Arggggghhhhhhhhhhhh !!! I needed that
So annoyed with myself I got my stupid hopes up this month after having all sorts of weird stuff going on , should have known better apart from anything else I only started the Serrapeptase a few days before Ov was I really expecting miracles ? (erm yes )
Well anyway I cracked yesterday (10 DPO)and got an OPK out to see if I'd get a line (yes I know using OPK's as pregnancy tests is pointless )and there was just a very thin faint sort of line on it a line I could put down to normal LH but nothing else
I have to admit to being gutted I had a lump in my throat for hours, but then I got angry instead, with myself for getting my hopes up, with my stupid body for being broken and with the stuff I've tried for not bl**dy working and just giving me stupid possible pregnancy symptoms
All I wanted to do last night was crack open the wine I've had in the cupboard for 4 weeks (that's a record for me without opening a bottle ) but then I started thinking about this cycle and how the eggs for this month were already growing and decided not to drink and then got angry with myself again for being hopeful that this month would be any different
So anyway I'm just on the countdown to AF now , my temp was lower this morning, boobs less sore and cm turned clear, which all happens normally about 2-3 days before AF
I had figured it wasn't due until Saturday based on the OPK's but we'll see I suppose.
Am back taking the DHEA from yesterday, I stopped it once I knew I'd ov'd so have had a 9 day break but will take it up to ov and then from 10 DPO once I'm sure I'm out and hope that's enough, the pregnenolone I've been taking every day still along with the Serrapeptase and the Nattokinase so will keep that up and at least this coming cycle I'll have been taking it for over a month and the progesterone cream I'll carry on with until tomorrow (12 DPO ) then stop just in case it delays AF .
So that's the plan for the next month and we'll see how that goes
How is everyone ? In a better mood than me I hope xx
Posted: Tue Aug 06, 2013 1:49 pm
Post subject:
Awww Nat I am sorry, but it's not over until the wicked which arrives. This is why I gave up trying to fall pregnant and leased a horse, bought a new saddle & physically killed myself daily with exercise. Now my horse & I are getting fat through very little exercise as I have severe pelvic pain and almost 16 weeks along now.
The thing I hated most about txt was the tww & all the symptoms or body can produce to make u think u are pg & then for the witch to arrive.
Much baby dust to u all xxx
Posted: Tue Aug 06, 2013 4:32 pm
Post subject: Hello ladies...
Hey ladies, just thought I would pop in say Hi, I am currently 11+4 weeks with our second reversal success baby (so far) am keeping everything crossed as we have lost 4 babies since having Harry who is now 2! Time has gone by so fast x How are you all doing?
Nat your a constant source of help and knowledge and I pop in for a read to see how your doing? not stalking you honest lol my fingers are still crossed for you no one deserves it more xxx good to see lots of bfps and still lots of hope and stubborn determination out there keep it up ladies x love hope x
Posted: Wed Aug 07, 2013 6:50 am
Post subject:
Thanks Jelly Bean , I'm sure you're not fat :)Wow 16 weeks that's gone fast have you got a proper little baby bump now SPD's horrible isn't it Are you getting any help with that, I believe the physio can really help, I found swimming was the only thing I could do without pain when I had it with my DD
I think the exercise and not thinking about TTC are very good ideas, that's what I was doing before we went away and I did feel better for it, just slipped since we got back but the scales were mean yesterday and I've gone up 2lbs so I think I'll take your advice and get back to it before it all comes back I won't have time to think about TTC once I start in college so I suppose its just made me decide to give it one last shot before then but I don't want to get obsessive about it (who said too late )xx
Great news Hope so are you having a 12 weeks scan soon I bet Harry's keeping you busy now 2yr olds are fun aren't they but hard work as well
It is shocking how fast the time has gone, its 3yrs today since I had my op at the time I never would have believed I still wouldn't even have had a BFP by now but I'll keep plodding on for a little while yet Hope everything goes well for you when you have your scan xx
Posted: Wed Aug 07, 2013 7:04 am
Post subject:
Morning ladies , Hope you're all well today Looks like we might have some sun back this week
Well after Monday's minor meltdown I'm calm again now
This morning my temp was higher and my boobs are more sore again and I have white cm again as well I didn't even use the progesterone cream last night either So not sure why my progesterone would rise, must be my corpus luteum chucking some out in it's death throes I suppose
I'm not reading anything into it, definitely not today, I even had a dream last night that AF showed early and I felt very PMS like last night
So I suspect it's just my body teasing me and I totally refuse to even consider buying a test today as I know the negative I'd get would just be too depressing
So my plan is to keep busy and try and forget what was happening 3yrs ago today , well nothing at this time in the morning actually but you know what I mean
have a great day Ladies xx
Posted: Wed Aug 07, 2013 8:31 am
Post subject:
NAT STAY AWAY FROM THE SHOPS, NO TESTING UNTIL NEXT WEDNESDAY IF THE WITCH HASnt SHOWED UP!
Here is a mental pic for you gals, I look like mix between Dolly Parton & Buddha. I have only ever had girl's & the belly seems to jump out from the word go which makes me think I am having another girl. Roll on the 10th September to confirm my suspicions.
Been to physio and have told to sit on a ball, use a maternity belt belt, use crutches and they now have decided with spd they can't do anymore. 8 yrs ago they did manual manipulation. As with all things regarding babies the advice & do 's n Don'ts has changed.
Posted: Wed Aug 07, 2013 10:59 am
Post subject:
Aww bless you and your Buddha belly Jelly bean I bet it's not as bad as you think, I think you always feel bigger than you look to other people
You never know could be a boy, I've got a mix and never really noticed boy or girl specific signs My first and last boy I got a bump late but my middle boy I was huge from the beginning really huge with my first girl I was big from the start as well but with the 2 after her I had small bumps until 28 weeks like with the 2 boys Same with morning sickness the only two times I had it bad one was a girl and one a boy
How many girls have you got ?
I had 3 in a row and have to admit I got a bit sick of pink frilly dresses in the end but there is some gorgeous stuff about at the moment for girls
Not too long to wait to find out anyway
That's not good with the SPD is it I just got told I had to put up with it by my midwife but that was 13yrs ago I thought they'd got better they didn't even have the balls then so I just used to spend a lot of time leaning back with my legs up on pillows as it was the only way to stop the pain and then got told that's probably why she was breech but swimming was great and was the only time I could move about easily as well I would have stayed in the pool the whole time if they'd let me I hope it doesn't get any worse for you .
Don't worry I'm not testing no chance of buying sneaky tests anyway with the kids off
Posted: Wed Aug 07, 2013 7:56 pm
Post subject: Hello
Hi Ladies
I have missed 2 weeks of posts as been on holiday, I thought it would be stress free but the witch arrived the day before we left and then we were monitoring during and trying, This is our 2nd month of actively trying since Mr Pickles did our reversal in June!!
Helen was so lucky to catch the month of her reversal - im so happy there are happy stories on here!
How is everybody else? Any new BFP's???


text:
Manchester United Message Board
A Yahoo! User Aug 25, 2006 07:49 Flag
Arsenal will pay the price for going foreign
Arsenal seem to have made the mistake of having a squad of players, none of whom really understand the club or would not rather be at another club. No players from their acadamy. No Brits who value their history (limited though it is). No sole. Just a bunch of foreign mercenaries who would give their right hand to play for Real or Barca (or even Atletico in the case of Reyes). The only English player, Ashley Cole, wants to leave because its too foreign.
I have to say that however much I loathe Arsenal, in the days of Wright, Adams, Dixon, Parlour etc etc there was a spirit about the club. They had a whole squad who were Arsenal to the core.
Now, I can't really think of one player they have who would stick around if things got bad and Wenger left.
And what happens when Wenger leaves? A British manager won't be able to manage that lot, so they'll have to go foreign again perpetuating the destructive sole sapping excercise of de-anglification. In fact it can't be called de-Anglification as all the de-anglifying has been done. So, who will be there fighting for Arsenal's cause when wenger leaves to manage France or Real? They will have 25 foreigners wanting out.
Oh what a shame. Such a pretty stadium too. All those empty seats will be so unattractive. But on the upside, they'll easily have the biggest stadium in the Championship.
Thankyou Sir Alex, for keeping us on the British path, with a sprinkling of foreign magic.Sort: Newest | Oldest | Most Replied Expand all replies
A Yahoo! User Aug 27, 2006 02:33 Flag
watford 1 man utd 2
man city 1 arsenal 0
spurs 0 everton 2
utd 3 games 9 points
arsenal 2 games 1 point
spurs 3 games 3 points
end of argument
A Yahoo! User Aug 26, 2006 22:12 Flag
john,i hope he's not sticking needles in my effigy,lol.Thanks for understanding what i was trying to say,and may we have many more football arguments mate,lol
A Yahoo! User Aug 26, 2006 22:10 Flag
i'm kind of glad you dont live on planet harris myself,
as an arsenal fan, i do wish we had more "english" players, however, as is the trend for most clubs in the premiership, overseas players are better value. only chelsea can ignore this rule(22m for swp) and occasionally man utd, 25 for rooney(cheap now!) 18 for carrick(expensive). I know utd had an incredible batch of home grown talent nevilles, giggs, becks scholes butt etc years ago, but struggling to think of any in last 5 years? fletcher?o'shea?brown? all struggling to make it into 1st team!
so i think its very easy to critise arsenal, but i forsee in 5 years you lot having 8 or 9 oversea players in your starting line up.
as for the stadiums, been to both(wife is a scum supporter, shes not the sharpest tool in the box dear of her) and they are with out doubt the finest in the land.
as for the teams, think utd have the edge, just, and i never thought id say this, but id rather you lot won the epl rather than those fuckers chelski.
up the arse!!
A Yahoo! User Aug 26, 2006 18:12 Flag
Ian the traveller_mx is john_brewer_1959
He hasnt used that ID since he was hounded from the england pages during the world cup for his racist comments on everyone from the Scots, German, Argies, French and Irish etc etc
Ignore him for this is the kind of thread that he thrives on.
A Yahoo! User Aug 26, 2006 18:01 Flag
and lets be honest even the english are getting pissed off with america
A Yahoo! User Aug 26, 2006 18:00 Flag
well i'm a european,so i dont get called a foreigner in france,thank you very much.You did go on a bit though,god get a life
A Yahoo! User Aug 26, 2006 16:55 Flag
lmao boo,just read your post ,loved it mate
A Yahoo! User Aug 26, 2006 16:49 Flag
your post is pathetic
A Yahoo! User Aug 26, 2006 16:40 Flag
well said g3song!
Im united 1st and foremost.
- View More Messages


text:
Ready to watch this entire course?
Become a member and get unlimited access to the entire skills library of over 4,900 courses, including more Design and personalized recommendations.Start Your Free Trial Now
- Overview
- Transcript
- View Offline
- Comparing real-world brush behavior with brushes in Painter
- Saving a brush variant for future use
- Using loaded brushes
- Using sponges and modifying captured dabs
- Drawing with pastels and chalk
- Painting with the traditional watercolor brushes
- Packaging brushes for distribution
Skill Level Intermediate
The Cloners category variants work in concert with source and destination imagery. With this relationship established, the colors of the source image can be funneled through a cloner brush, and impart that brush's expressive characteristics to the destination file. Beyond the Cloners, almost any brush in Painter can be easily called into service as a cloner. Let's go ahead and take a look at cloning brushes. I'm going to start off by giving you a little demonstration of what often happens when people first encounter cloning and aren't aware of this source and destination image relationship.
They'll though often get to a cloner brush, which we've got here in the Cloners category and start drawing. And without any knowledge of what's going on, they'll wonder where are these funny colors coming from? And the way that cloning works in Painter, there must always be a clone source established. So if you haven't even gone in and created a source and destination file, Painter still has to have that connection established and when one has not been user created, it's going to utilize the current pattern.
And the Pattern that is there by default is called Hens & Chicks and it's this pattern that typically people will start to see these colors and they'll wonder why am I getting this? And this is the reason. That Hens & Chicks, which is the default pattern, tends to be the one that without any dictation from the user will start to come out of the cloning brush itself. So I just wanted to let you know if you've encountered this, why and where these particular colors and patterns are coming from and it just relates to the way Painter works with the cloning in general.
Now just to review, I'm going to call up the clone chart here and show you what I'm talking about. If you have an image and it can be any image. It can be a photograph or artwork you've done. Whatever that image is, you create from it a clone. So the original image is what I always refer to as the source image. This is where the color information will come from and it goes through one of these cloner brushes and whatever that brush is set up expressively to do, it will take those colors and impart it to the dabs that it's applying to the destination image.
So this unique relationship between these two files is what creates the ability to do cloning of in this case a photograph through to a second image. They're two separate images but they are linked by the fact that the cloning command has been used to create this relationship. So let's open up an image, and this is an image you'll find in your Exercise Files. It's called autumn and we're going to create this relationship by going to the File menu and I'm going to take advantage of the Quick Clone command here.
And in this case, it's automatically erasing the image from the destination file but don't be fooled. There is still a relationship established between these two. The quickest way to see that is to go up to the Tracing Paper icon here and when you turn it on, we're now seeing a ghosted version of the source image in the destination. This can actually be used as tracing paper if you'd like to use it that way. But it's just a way to able to see the imagery as you apply it. And in this case, we've got this Flat Cloner.
So I'm going to use the fact that I can now see this, so that I can go in here and I'm doing it very roughly, but I am placing these strokes not just anywhere. I'm placing them based on the underlying imagery. So the fact that I can see through to this and yet have it as a separate file gives me this remarkable ability to paint from the source image and not worry anything about where the color's coming from. I'm just taking advantage of the particular quality of this brush and the fact that in the same resolution source file, it knows how to constantly pick up the color from that location in the source and apply it to the destination.
Now if we turn this off, you'll see that it's by no means a finished image but the strokes that I'm placing are somewhat intelligently placed, because I'm using the reference of the source image to create that image. If I turned off cloning, and I'm going to show you this now. In the Colors palette, there is a little icon right here. This is the Clone Color button. If I disable this, you'll see that know the Color palette is back to its full colors and what that means is the color is now coming from the Color palette.
As soon as I enable the Clone Color button, it grays out because we're telling the brush to ignore the Color palette and now get the color from the source imagery. With this knowledge, this means that almost any brush in Painter, and I'll qualify that, not every brush but almost any brush in Painter can be turned into a cloner. So let's go to a non-cloning category. I'll go to Chalk for example and here is the Real Soft Chalk. So I'm just painting with it and it's a brush that utilizes texture and there is some qualities that are happening based on my tilt and bearing.
So this brush has particular expressive capabilities but it's being used at this point in tandem with the colors on the palette. But by simply clicking on that Clone Color button, we're now saying ignore the colors in the palette and instead get your colors from the source image. And once again, I'll go ahead here quickly and delete the current imagery and by turning this on, I can once again go in here, but now unlike the more Oil style brush you saw earlier, I'm now creating an image in the style of chalk.
It's using texture. It's playing with the ability of turning the different angles and applying different widths to it. So now I am funneling this source image through the medium of chalk and whatever kind of capabilities this particular variant has been set up to do, I can interpret the source photograph in this case to this piece of chalk. So if we close it off, you'll see once again nowhere near a final drawing, but now this does look like chalk and you can almost think of the source image as your color palette.
That is where the color comes from and you're relieved of having to think about establishing the colors you're painting with, because that heavy lifting is being done by the cloning activity. You're still applying your expressive sensibilities to the way you're using this particular brush and the way that you're applying it and combined, you get a very unique way to create imagery using a separate image as your source. The cloning brushes were one of the first features of the original version of Painter and it really garnered a lot of attention at the time. It was very revolutionary to be able to do this.
Cloning techniques have evolved in Painter, particularly with regard to the smart stroke brushes, which we'll be looking at shortly. But the cloners still provide a very useful technique for transforming an image into a different style. So if you want to take advantage of that, visit the Cloner category.


text:
May 10
Fritsl is honored to play in a great line up, including the Stagger Moon Band, Ali Crowley and Southern Proof. Fritsl plays at 2:30. Archer Bolle Is a four year old Franklin co native who was diagnosed in January with NH diffuse Large B Cell lymphoma. We would like to invite you to join us in a benefit for this little guy and his family. Blow ups for the kids, Icy Machine and more. BBQ plate lunches will be sold with all proceeds going to Team Archer. Corn Hole Tournament (will be judged), starts at 2pm the fee is $10.00 per person, (Prizes for the winners). We will have live music all day from some great local bands. There will also be a Silent Auction. We are in need of Donations to make this a huge success. If your interested in donating to this great cause please send us a message, or watch around town in the coming days for more information and other ways of contacting us. Thank you for all your support, we hope to see you there.
Aug 6
Jul 6
May 28
Newly rebuilt... Show is from 9-1.
May 27


text:
McIlroy and Lowry in great shape at Sawgrass
Rory McIlroy missed out on creating a piece of history in the Players Championship as Shane Lowry set the clubhouse target in the weather-affected second round at Sawgrass.
Rory McIlroy missed out on creating a piece of history in the Players Championship as Shane Lowry set the clubhouse target in the weather-affected second round at Sawgrass.
Graeme McDowell hauled himself up the Players Championship leaderboard with a terrific 69, but it was a tough day for Shane Lowry and Rory McIlroy as the treacherous Sawgrass greens left many frustrated.
Shane Lowry is hoping his brilliant opening round of 65 at the Players' Championship on Thursday can set his season alight and inspire a big performance at next week's Dubai Duty Free Irish Open.
Offaly man Shane Lowry wrote his name into the record books with a stunning burst of scoring on day one of the Players Championship at Sawgrass.
Rickie Fowler will this weekend attempt to achieve something which proved beyond the likes of Tiger Woods, Phil Mickelson, Greg Norman and Jack Nicklaus - and defend the Players Championship title.
Rickie Fowler won a play-off to take the Players Championship title at Sawgrass but Rory McIlroy was left to rue putting difficulties that meant he finished tied for eighth.
Former world number one Tiger Woods celebrated keeping a proud record alive in the Players Championship - and then insisted he could still win a third title at Sawgrass.
Rory McIlroy goes into the final round at the Players Championship title at Sawgrass four strokes off the lead after a third round of 70.
World number one Rory McIlroy put Masters champion Jordan Spieth firmly in the shade on the opening day of the Players Championship at Sawgrass.
Rory McIlroy hopes a more conservative approach will continue to translate into improved results in the Players Championship, one of the few big tournaments he has yet to win.
Rory McIlroy came out firmly on top in an early instalment of his so-called 'rivalry' with Jordan Spieth on the opening day of the Players Championship at Sawgrass.
It was not a repeat of Rory McIlroy's complete nightmare at The Masters, but it was perilously close to it for Graeme McDowell as golf's richest event turned sour on him at Sawgrass.
KJ Choi has won the Players Championship in Florida. Read how the final day unfolded at Sawgrass with our text commentary.
Graeme McDowell and Nick Watney shared the lead after day three of the Players Championship at Sawgrass.
Graeme McDowell and Luke Donald are in joint third place entering the third round of the Players Championship - golf's richest event - at Sawgrass.
Tiger Woods has withdrawn from the Players Championship after slipping to six over par 42 following his opening nine holes in Ponte Vedra Beach, Florida.
Lee Westwood has another disappointment to add to his long list, this time out-gunned by a player who knows even more about near-misses.
After 108 starts in America since his one and only win 12 years ago Lee Westwood could make it three European victories in a row at golf's richest event.
Tiger Woods's woes continued on Sunday when he withdrew from the final round of the Players Championship at the TPC Sawgrass because of a neck injury.
Graeme McDowell failed to make any real impact on the Players Championship leaderboard, finishing with a level-par round of 72 at Sawgrass on Saturday.


text:
Reubens donate to Tories
August 1, 2008Billionaire brothers David and Simon Reuben have donated almost £200,000 to the Conservative Party. The pair, of Iraqi-Jewish descent, made their fortune in the aluminium trade. They also have a property business. They have made six payments to the party.
Last updated: 1:22pm, July 31 2008