Thought I might put in my two bits here. I took the exam and passed with 77%. Had to go over the books thrice before I could locate the obscure parts. I think it was tough since it looks like such a dry subject in the beginning, but it grows on you. Declarative programming (for writing xsl transforms) gives you a different aspect on programming. Its a bit weird that you may have to write three different templates with different "mode" attributes, while in java or C you'd be writing just one function to handle three similar transformation jobs. I have taken the Brainbench xml and xsl tests too, and the bb-xml one was trivial considering my preparation for IBM XML.. the bb-xsl one was more difficult, considering they had questions on the various parsers and their quirks (Saxon, Xalan, MSXML) I think it makes sense since thats what you need to use, but comparitively IBM XML exam focuses solely on the technology (phew ! :-)) I recommend you visit these sites, if only to pay your respects...topxml.com, oasis.org. http://www.oasis-open.org/cover/sgml-xml.html I used two books : 1. Professional XML 2nd Edition (PXML2 henceforth) (Chapters 1-6, 8-14, Chapter 13 brings together the good stuff from all the earlier chapters, chapter 14 needs to be gonethrough with a fine toothed comb, 18, 20, 24, 27)(dont waste your time with the first edition) 2. XSLT from O'Reilly by Doug Tidwell (Doug-Tidwell henceforth). These two cover the exam questions almost totally (though I dont know if the same holds true about the exam objectives) Spent a long time on PXML2, it was quite confounding in the beginning, and some parts are unreadable, it would be good if they can be broken into many objective type questions . Doug-Tidwell was a huge relieving and restored my faith in humanity... very conversational, the guy knows what we dont understand.. ! I eventually ended up reading the whole of it (chapters, appendices - which is important reading for the exam) and that was a good thing too.. ! I dont think the other recommended book "Professional Schemas" is necessary, PXML2 covers schemas well enough for the exam questions. I envy these guys out here who say "oh I read the spec sheets + some crummy unrecommended book and I got 80+ % and you dont need to refer anything else". I dont know if they are pulling your leg, though. I dont know why people here keep asking how much to pay for the exam - call your local computer institute.. ! About the exam, I was close to the time, I could barely finish. Okay here's some stuff that I think you'll do well to spend time on : Core XML : 1. Attribute value templates. (Doug-Tidwell pg.66, 104) 2. CDATA sections : they can appear anywhere in the XML document (I initially thought they belonged in the DTD !) They cannot contain binary data because the 5D 5D 3E sequence would signify the end of the CDATA section. But if the binary data is base64 encoded, it can appear in the CDATA section, but in that case, that data can also appear as element content (but will it end up being parsed unnecessarily?). So whats the best place to put base64 encoded data in an xml document ? Its "not possible" to nest CDATA sections (conditional sections in DTDs can be nested), they "cant" be empty, may occur anywhere that character data can occur (even inside elements ?) (PXML2 pg.74-75) 3. Attributes and namespaces (If you dont qualify them with a namespace, they dont belong to any namespace !) (PXML2 pg.113) 4. Namespaces, Default namespaces, overriding defaults, scope. Namespace declarations can occur in any element. (PXML2 pg.106-114) 5. <aaa:bbb> should end with </aaa:bbb> and not </bbb> 6. Root element can also have attributes ! Usually can provide "version" attribute to help in versioning.. another method to provide versioning is to use different namespace. (PXML2 pg.659) 7. What all does a Validating parser do with respect to locating and resolving namespaces, defaulting attribute values, checking external entities, expanding entity references ? SAX : 1. Differences between SAX1 and SAX2 - DocumentHandler interface of SAX1 has been deprecated in favor of ContentHandler interface in SAX2, which supports namespaces. http://www.saxproject.org/?selected=sax2 2. XMLReaderAdapter class (of SAX2) and ParserAdapter class (of SAX1) are used to convert between SAX1 and SAX2. Both contain the parse() function. http://www.saxproject.org/apidoc/org/xml/sax/helpers/XMLReaderAdapter.html http://www.saxproject.org/apidoc/org/xml/sax/helpers/ParserAdapter.html 3. Steps involved in writing code for SAX parser. (PXML2 - pg.534) 2. Absence of "read ahead" in Sax. (PXML2 - pg.548-549) DOM : 1. "leaf level nodes" in DOM - those which dont have children according to DOM1, these are leaf level nodes (please verify) : DocumentType CDATASection Comment Notation ProcessingInstruction Text (PXML2 - pg.467 - Dom class heirarchy) 2. Dom2 provides support for namespaces, Dom1 did not. So you'll find core functions names in Dom2 that are identical to those in Dom 1, except they have NS in them. (PXML2 pg.503-508) 3. How does removeattribute/removeattributenode behave when the attribute has a default value declared. (PXML2 pg.478-479) 4. Event propagation in DOM and capture. (PXML2 pg.509) 5. DOM can be used to modify an XML document periodically without having to create a new document (SAX and XSLT cannot modify a document without having to create a new one) 6. DOM is an IDL, not an API. (SAX is an API) (PXML2 pg.486) 7. NodeIterator interface automatically reflects the changes in the actual document (PXML2 - Pg.517-518)
Schemas : 1. Advantages of Schemas over DTDs 2. Importing external schemas xsd:import <xsd:import namespace="...." schemaLocation="myxml.xsd"> what if the target namespace is unspecified ? (PXML2 pg.660-662) 3. Its possible to import schemas that have just about any top level elements, even just attributes. 4. Its possible to validate multiple documents with a single Schema file, as long as the root elements of the different documents are defined as top level elements in the schema. (PXML2 pg.220-221) 5. Usage of xsi:nillable and xsi:nill (PXML2 pg.219) 6. Simple types can be built with list, unions, restriction (enumeration, pattern, etc) (PXML2 pg.205-206, 224-227) 7. Can you build an extension on multiple base types ? I guess the answer is no (you can extend only base type at a time, and the new complex type can be used as a base type for further extension) (PXML2 Pg.209) 8. Simple types vs Complex types (PXML2 pg.206) 9. minoccurs and maxoccurs are 1 by default. If maxoccurs is absent, its the same as minoccurs pg.xx of PXML2 10. Quirks of xsd:all - can it contain complex types ? (PXML2 pg.214-215) 11. Content models (PXML2 pg.211-213) 12. xsd:unique (PXML2 pg.217) 13. "Namespace coercion" http://lists.w3.org/Archives/Public/www-xml-schema-comments/2000OctDec/0479.html http://lists.xml.org/archives/xml-dev/200105/msg00395.html XSLT / XPATH 1. xsl:import - Import a bunch of style sheets which themselves import another bunch of style sheets, then whats the precedence order of these style sheets in the current context ? Try it out with your own examples 2. xsl:import and xsl:include and usage of xsl:apply-imports (Doug Tidwell pg.237-242, 275-278) 3. 5 axes that can completely cover all document nodes except for attribute and namespace nodes : ancestor, descendant, following, preceding and self (DT pg 336) 4. Get your axes knowledge right. I found the "following" and "preceding" axes to be a bit hard to understand in the beginning. (Appendix B of Doug-Tidwell) 5. The mode attribute for templates - a single xsl style sheet can be reused for different purposes with the use of mode attribute. (PXML2 Pg.73) 6. The node test * selects all nodes of principal node type for that axis. For the child axis, the principal node type is element. So abcd/* (short for abcd/child::*, since 'child' is the default axis) will selects all the child element nodes (no attribute or namespace nodes). And, abcd/@* (which is short form for abcd/attribute::*) will select all the attributes of the context node (since for attribute axis, the principal node type is attribute node) (PXML2 - Pg352-353) 7. The document function (chapter 7 of Doug-Tidwell) lets you access the root node (and hence all other nodes) of any xml file, as well as the root node of the xsl file itself. It also helps you get input from multiple XML documents. Though if you want to output to multiple xml files, you'll need to use extensions (pg. 167 of Doug-Tidwell) The document function can create "different views" 8. xsl:if test=" -9" returns true ! Only zero, negative zero or NaN (string) returns false. (Doug-Tidwell pg.341) 5. Typically the boolean() function will be called automatically when needed (like in xsl:if). Pg.348 of PXML2 9. floor(0.5), floor(-0.5) - what do they return, zero/negative zero ? 10. Global variables and local variables : Local variables (or Param) override the global variable of the same name. Global variable "cannot" be accessed in a template which declares local variable (or param) of the same name. A variable and a param cannot have the same name in a template. (Doug-Tidwell pg.79) 11. xsl utput method values can be text, html or xml (pg.298 Doug Tidwell) XPointer: 1. Xpointer essentially, is an extension of xpath (pg.454 PXML2) XML Signatures. http://www.w3.org/TR/xmldsig-core/ 1. Core validation consists of Signature validation and reference validation, both are mandatory (none are optional). 2. Signatures ensure sender authentication, message integrity, etc, but not "receiver" authentication. Soap : 1. SOAP message consists of an envelope, which contains the header and the body. The header is optional. (pg.1038-1039 of pxml2) 2. "SOAP messages are fundamentally one way transmissions from sender to receiver. Often mesages are combined to implement request-response communication". 3. "SOAP messages can carry communication as one way or two way transmissions. The two way communication is, in essence, RPC calls and replies" (PXML2 pg.1037, 1042) 4. SOAP can also do method invocation, method response (PXML2 pg.1042) 5. SOAP, IIOP, RMI, RPC - whats the relation ? WSDL and UDDI : 1. Concepts (Chapter 27, PXML2) DTDs : 1. its possible to include multiple DTDs with a trick (parameter entities), since multiple dtd importing is not directly supported. And then there's no support for namespaces either.. (pg.174, 184 PXML2) 2. DTDs provide limited support for namespaces. (every element type from each namespace will have to be included in the DTD if namespaces are used) (PXML2 pg.183) 3. Its possible to nest conditional sections (pg.178 PXML2) 4. Unparsed general entity references can only be used inside attribute values (Parsed entity references cannot be used because attributes can contain CDATA, not PCDATA) (what about built-in entity references like ' ?) (Pg.167, 168 PXML2) 5. A parsed entity's replacement must always be well formed xml. (pg.169 PXML2) 6. ID attribute values can only be legal xml names ! (so 23423, -234, etc are invalid) (Pg.159,160 PXML2) XSL:FO : 1. xfo:inline - it can be used to make bullets equivalent to <li> in html (pg.842-843 PXML2) 2. use of xsl:fo has nothing much to do with rendering on different devices, especially handheld devices (?) 3. Comparison of XSL-FO and CSS (pg.849 PXML2) XLNK : 1. It can be used to connect not just connect xml resources, it can also connect non-xml resources (like image files). (Pg 452 of PXML2) Information Modeling : Go through each section of "Data Modeling" (chapter 14 of PXML2) carefully a few times. This covers 26% of the exam, so its well worth the effort ! You have a scenario (which looks like a regular ecommerce setup) and then you either make changes to improve it, or have to accomodate something new, so what technologies do you use/recommend or what changes do you need to do ? 1. well, for one thing, you can equate "fast processing" with SAX, and "periodical modification" with DOM (since SAX cannot modify the document, while DOM can), and then if you dont want to create a new document, just modify the current one, then DOM is the way to go. 2. Schemas (rather than DTDs) are necessary when you have possibly clashing elements, because you can import them in different namespaces. DTDs provide "minimal" support for namespaces. 3. What considerations become important when creating documents to be delivered to different devices, especially handheld devices ? 4. For The "Exibit" questions (mosty Information Modeling questions), I recommend you read the questions before you read the exhibit, because sometimes the options make no sense, and can be ruled out (like "use XSLT to transform HTML", which can be ruled out since XSLT can only deal with well formed documents and HTML docs are rarely well formed, though I am not saying this is correct.. I could be wrong on this one !) Good Luck !
Salam and Hello , Congracts I like ur Very Handsome effort , Add : * IBM is not only concerned with XML and Its Related Technologies but With HTML as well
* Don't Take Schema Lightly and See everything in Context with Schema (I mean Interconnections like XSLT and Schema , DTD and Schema etc ) * As me and My Friend Got Falied , I must say one thing try to get pass in a single attempt ,we only prepare for a weak(just 25 hours)and got 51% and 49% repectively .IF we Work for another Weak we can easily got Passed as I THink u don't need to be a guru in XML . * Before Starting XML Do some Programming such as (Java or C).It will help greatly to pass . * and Lastly if some one got Failed and reading this post .Plz try it again .See my example i got Volanterly Falied as i needed some of the Feedback . I Get Back on track if u failed don't Panic come With some thing new as me and my friend have decided to get 11111% in XML no zero's. Allah hafiz , regards
Muhammad Hussain<br />Sun Certified Java Programer (SCJP2)<br />Sun Certified Web Component Devloper SCWCD
Glad you appreciate, Lydia. :-) and you guys too. I was thinking of making another post with just the latter part since I'm not sure anyone would be interested in the adventure part.. ! I'll wait a while for the responses though. Besides, take my post seriously, I'm sure you'll benefit from it :-)
We can walk to school together. And we can both read this tiny ad: