Choosing between database types
Nov 23 11:35:01
Askari and Java prototyping
Nov 22 4:48:43
Finding scarcity in the digital economy
Nov 10 12:17:27
Tornado - the web services server?
Sep 19 23:19:55
Quote of the week
Jul 18 9:18:44
XMLKit is a bundle of useful XML conversion and validation programs using batch files to simplify their deployment and use. Available programs include:
This is a follow up to my previous proposal on xpatch.
Joe has rightly pointed out that XPath is not sufficient to handles XML files where ordering is not guaranteed. For example:
<attendees>
<attendee name="Dream" status="Confirmed" />
<attendee name="Desire" status="No reply" />
</attendees>
If I want to update Desire's status, but don't know a priori which order these elements will be returned, xpatch won't work:
UPDATE: Also see my follow-up post on an alternative method for replacing nodes.
Joe Gregorio asks about available XML diff formats, and based on some Googling, there really isn't anything robust and/or readable out there.
In particular, most formats seem to hard code differences by node number, which doesn't hold up at all well if you may want to merge diffs from multiple sources from a single code base a la traditional diff merging in code bases.
Given the enormous amounts of XML being processed, it seems incredible that nothing has been defined no standards have emerged so far. So here's a possible option. It's based heavily on the Mozilla XUL Overlays pattern, but generalised for any XML.
In response to a question from a reader, Tim, this is a follow-up from an earlier article on SharePoint, SOAP and VBScript. This time, we'll look at how to do more complex calls to SharePoint web services in VBScript
Some web services in SharePoint require passing XML as parameters. Unfortunately, you can't pass an XML document, it has to be an XML node element, and this takes a bit of effort to construct in VBScript.
The example we'll use is making a call to GetListItems, which returns all items in a SharePoint library, optionally matching a query formatted using a special XML syntax.
This is a nice trick. Particularly since Ant provides some pretty nice tools for XML manipulation.
I've long been fascinated by the eXist native XML database, and I think it's just made it into my list of apps that can really help an enterprise out.
Why? Well, I think in the Web 2.0 days there's a clear shift away from aggregated data sources to document-driven workflows. But there's still a need to search, run queries, and limit access to these documents.
Plus eXist belongs to the WebDAV world. That means REST: you can add, update and delete documents from eXist just by issuing the right HTTP command. The icing on the cake is that by making a couple of simple changes to an XML 'collection' (think: collection = database) you can turn it into fully fledged Atom feeds with full APP support. Mmmmmm.
Then check out xFront, and particularly their article XML Schemas: Best Practices.
(UPDATE: Their Design Goals Questionnaire is also really useful.)
Practical advice from the xml-dev mailing group, so these people do it every day.
This VBScript code allows you to query and post just about any information to SharePoint using web services. There are two steps involved:
Option Explicit
Dim xmlDoc, SOAPClient
' Get the root element object
Set SOAPClient = createobject("MSSOAP.SOAPClient") [For the basics of R3 syntax, see the R3 Draft.]
One of the primary things which makes semantic markup useful is that it allows inferences and deductions based upon knowledge. For example, if I know that John is the father of Susan, and Greg is the brother of Susan, then I can create semantic rules like this:
A brother is a male sibling The father of a sibling is the sibling's father.
and deduce from these rules that John is Greg's father.
R3 allows for these kind of relationships to be expressed through using special nodes that are known to belong to an ontology schema. R3 syntax remains exactly the same except for the introduction of a <template/> tag, which defines spaces for placeholders which need to be filled in accordance with certain critera for a relationship to hold. For example: