XPointers define an addressing scheme for individual parts of an XML document. Some key absolute location terms in XPointers are:
- root() - selects the root element of the document
- id() - selects the element with the given ID attribute value
- descendant() - selects descendants of a given element by depth and name
- following() - selects elements following another in document order
These location terms can be used in XPointers appended to URLs to precisely select a particular element or part of an XML document to link to.
COinS allow metadata about articles to be hidden on web pages in a standardized format called OpenURL. Browser plugins can use COinS to find documents or store metadata. Adding COinS to pages allows users more simple and personalized work with resources by linking to library services or saving references.
The document discusses Open Document Format (ODF) which aims to make office documents more accessible and interoperable by being based on open standards like XML, ZIP, and CSS. It describes how ODF files can be programmatically processed at different levels of abstraction from direct XML to object models. Frameworks like odf4j and AODL provide ODF support for Java and .NET respectively, hiding some of the XML complexity and exposing ODF semantics. Future work areas include harmonizing ODF toolkits and extending ODF through new metadata mechanisms.
A wiki for_business_rules_in_open_vocabulary_executable_englishAdrian Walker
This document describes an online system that functions as a wiki for business rules written in open vocabulary English. The system allows users to collaboratively write and execute business rules directly in a browser. It integrates data semantics, inference methods, and the meaning of English sentences so the rules can be indexed by search engines and the system may be useful for semantic web applications. Several examples are provided to illustrate how the system works, including examples involving name resolution, querying RDF data, OWL inferencing, an oil industry supply chain, and a bioinformatics ontology.
This document describes a research project that developed a client-side search module for a native XML website using XML technologies like XSLT, XPath, and DOM as well as JavaScript. The researcher created both a basic search and an advanced search utility. The basic search allowed searching across all text fields in a table using one text box, while the advanced search provided more options to search specific columns and refine searches. The project showed that an XML website can be effectively searched using a combination of XML technologies and JavaScript. The researcher plans to expand the search capabilities with more advanced regular expressions and server-side searching in the future.
This document summarizes the GNU Free Documentation License (GFDL) which allows users to copy, distribute, and modify documents while still giving credit to the original authors. It describes what can be included in a modified version of a document licensed under the GFDL and requirements for distributing multiple copies, such as including the full license text and making a transparent version available online.
Autograph: an evolving lightweight graph toolGraph-TA
The document discusses the motivation for developing a new graph tool called Autograph. It notes that existing graph software libraries and tools have limitations and frustrations for users who want an easy way to draw graphs and obtain basic graph properties. The document outlines a wish list of desired features for Autograph, including easy graph editing, undo/redo, geometric transformations, real-time updating of properties, and basic graph operations. It includes screenshots and poses questions to further develop Autograph.
20110830 Introducing the Social Media Research FoundationMarc Smith
Description of the activities and goals of the Social Media Research Foundation. The foundation is dedicated to Open Tools, Open Data, and Open Scholarship. See: http://www.smrfoundation.org.
One project from the Social Media Research Foundation is NodeXL, the network overview, discovery and exploration add-in for Excel 2007/2010. See: http://www.smrfoundation.org
This document introduces Gephi, an open-source network analysis and visualization software. Gephi can import network data in formats like CSV, GDF, and GRAPHML and visualize the network as an interactive graph. The document provides information on Gephi's file formats and encourages readers to visit Gephi.org for demos and examples of network graphs generated using Gephi.
COinS allow metadata about articles to be hidden on web pages in a standardized format called OpenURL. Browser plugins can use COinS to find documents or store metadata. Adding COinS to pages allows users more simple and personalized work with resources by linking to library services or saving references.
The document discusses Open Document Format (ODF) which aims to make office documents more accessible and interoperable by being based on open standards like XML, ZIP, and CSS. It describes how ODF files can be programmatically processed at different levels of abstraction from direct XML to object models. Frameworks like odf4j and AODL provide ODF support for Java and .NET respectively, hiding some of the XML complexity and exposing ODF semantics. Future work areas include harmonizing ODF toolkits and extending ODF through new metadata mechanisms.
A wiki for_business_rules_in_open_vocabulary_executable_englishAdrian Walker
This document describes an online system that functions as a wiki for business rules written in open vocabulary English. The system allows users to collaboratively write and execute business rules directly in a browser. It integrates data semantics, inference methods, and the meaning of English sentences so the rules can be indexed by search engines and the system may be useful for semantic web applications. Several examples are provided to illustrate how the system works, including examples involving name resolution, querying RDF data, OWL inferencing, an oil industry supply chain, and a bioinformatics ontology.
This document describes a research project that developed a client-side search module for a native XML website using XML technologies like XSLT, XPath, and DOM as well as JavaScript. The researcher created both a basic search and an advanced search utility. The basic search allowed searching across all text fields in a table using one text box, while the advanced search provided more options to search specific columns and refine searches. The project showed that an XML website can be effectively searched using a combination of XML technologies and JavaScript. The researcher plans to expand the search capabilities with more advanced regular expressions and server-side searching in the future.
This document summarizes the GNU Free Documentation License (GFDL) which allows users to copy, distribute, and modify documents while still giving credit to the original authors. It describes what can be included in a modified version of a document licensed under the GFDL and requirements for distributing multiple copies, such as including the full license text and making a transparent version available online.
Autograph: an evolving lightweight graph toolGraph-TA
The document discusses the motivation for developing a new graph tool called Autograph. It notes that existing graph software libraries and tools have limitations and frustrations for users who want an easy way to draw graphs and obtain basic graph properties. The document outlines a wish list of desired features for Autograph, including easy graph editing, undo/redo, geometric transformations, real-time updating of properties, and basic graph operations. It includes screenshots and poses questions to further develop Autograph.
20110830 Introducing the Social Media Research FoundationMarc Smith
Description of the activities and goals of the Social Media Research Foundation. The foundation is dedicated to Open Tools, Open Data, and Open Scholarship. See: http://www.smrfoundation.org.
One project from the Social Media Research Foundation is NodeXL, the network overview, discovery and exploration add-in for Excel 2007/2010. See: http://www.smrfoundation.org
This document introduces Gephi, an open-source network analysis and visualization software. Gephi can import network data in formats like CSV, GDF, and GRAPHML and visualize the network as an interactive graph. The document provides information on Gephi's file formats and encourages readers to visit Gephi.org for demos and examples of network graphs generated using Gephi.
This document provides an overview of XLinks, which define linking between XML documents. It discusses that XLinks have two parts - XLink defines links between documents, while XPointer defines addressing within documents. The document then explores simple XLinks, which are similar to HTML links, including using XLink attributes and describing both local and remote resources. It also discusses extended XLinks and link behavior attributes that provide more functionality than HTML links.
Bt0067 c programming and data structures2Techglyphs
The document discusses various data structures and file input/output functions in C programming. It defines pointers and their advantages, describes the fread() function syntax, differentiates between linear and nonlinear data structures, discusses stack applications and operations, defines linked lists and their operations, and provides examples for each topic.
Oracle Text is a search technology built into Oracle Database that allows full-text searches of both structured and unstructured data. It provides features like Boolean search, stemming, thesaurus, and result ranking. The Oracle Text indexing process transforms documents into plain text, identifies sections, splits text into words or tokens, and builds an index mapping keywords to documents. Developers can customize the indexing process by defining their own data sources, filters, sectioners, and lexers.
This document contains instructions for an assignment for a Web Technologies course. It includes 6 questions related to TCP vs UDP, features of XML, components of an XML processor, fetching data from XML to HTML, categories of PHP operators, and Active Server Pages (ASP). The questions range from short definitions and comparisons to longer explanations and examples.
The document discusses best practices for translating DITA (Darwin Information Typing Architecture) content and using the xml:tm (XML-based text memory) standard. It recommends using a CMS, avoiding translatable attributes, keeping topics granular, and using xml:tm to maintain author and translation memories for reuse and alignment between source and translated content. xml:tm allows embedding of contextual information to link source and translated text segments for more accurate matching.
The document discusses the development of a text-assisted defence information extractor using open source software. It describes the various components used in information extraction like gazetteers, sentence splitters, tokenizers, part-of-speech taggers, transducers, and JAPE grammars. The extractor helps identify keywords related to defence from a collection of domain-specific text documents. Preliminary results are promising, though more refinement is underway including a GUI for querying and a dictionary to improve keyword searching.
This document provides instructions on how to write and compile LaTeX documents. It discusses the tools needed like pdflatex and how to use them to compile a .tex file into a .pdf file. It also covers how to structure the main document and chapters as separate files and include them. The document concludes with an overview of LaTeX and pdfLaTeX capabilities such as references, fonts, mathematics, and more.
This document provides instructions on how to write and compile LaTeX documents. It discusses the tools needed like pdflatex and how to use them to compile a .tex file into a .pdf file. It also covers how to structure the main document and chapters as separate files and include them. The document concludes with an overview of LaTeX and pdfLaTeX capabilities such as references, fonts, mathematics, and more.
This document provides instructions on how to write and compile LaTeX documents. It discusses the tools needed like pdflatex and how to use them to compile a .tex file into a .pdf file. It also covers how to structure the main document and chapters as separate files and include them. The document concludes with an overview of LaTeX and pdfLaTeX capabilities such as references, fonts, mathematics, and more.
The document discusses OAXAL (Open Architecture for XML Authoring and Localization) and xml:tm (XML-based Text Memory) as standards for authoring and localizing XML documents. It provides an overview of related standards like DITA, ITS, TMX, SRX, GMX, and XLIFF. It then describes how xml:tm uses these standards and creates an XML namespace to embed contextual information, link source and target texts, and automate workflows for translation and localization of XML documents.
MacAD.UK 2018: Your Code Should Document ItselfBryson Tyrrell
Slide deck for my presentation at MacAD.UK 2018. I this talk I cover how I use Python docstrings, reStructuredText, and Sphinx to generate human readable documentation from my code base, and then automate the creation of that documentation with ReadTheDocs.org.
**Some of the slides contained video that is not shown in this copy.**
Semantic RDF based integration framework for heterogeneous XML data sourcesDeniz Kılınç
The document describes a semantic RDF-based framework for integrating heterogeneous XML data sources. It proposes using regular expressions to define the structure of XML data semantically rather than through XPath, addressing issues with previous approaches. The framework includes a Regular Expression Generator Tool to produce regular expressions from local schemas and an Integrator Tool Box to combine the expressions into a global data source.
This document provides instructions for preparing a paper using the ENTCS macro style package. It explains that the prentcsmacro.sty or entcsmacro.sty files should be used and can be found at the ENTCS Macro Home Page. It also provides information on the document structure, including the frontmatter environment for the title, author names, abstract, and keywords, and describes some of the sectioning and environments that can be used, such as theorems, lemmas, definitions and algorithms.
XML (Extensible Markup Language) is a flexible way to create common information formats and share both the format and the data on the World Wide Web, intranets, wikis, configuration and elsewhere in a cloud.
This document discusses XML query language XPath and navigation. It describes how XPath allows querying XML documents by addressing elements and text using a path-like notation. XPath expressions are evaluated based on a context node and node-set. The document also covers XPointer for pointing to specific data within XML documents, and how XPath can be used with the XML DOM and XPathNavigator class in .NET.
This document provides an introduction to XML, including:
- XML stands for eXtensible Markup Language and allows users to define their own tags to provide structure and meaning to data.
- XML documents use elements with start and end tags to organize content in a hierarchical, tree-like structure. Elements can contain text or other nested elements.
- Attributes within start tags provide additional metadata about elements. Well-formed XML documents must follow syntax rules to be valid.
The document discusses combining XML vocabularies using namespaces to avoid name collisions. It describes:
1) Declaring a namespace by adding an xmlns attribute to an element, which assigns a unique URI to the namespace and associates elements with a prefix.
2) Applying namespaces to elements by inserting the namespace prefix before element names. This identifies which namespace each element belongs to.
3) Using default namespaces, which omit the prefix and assume child elements belong to the namespace declared on the parent element.
SKOS - 2007 Open Forum on Metadata Registries - NYCjonphipps
An brief introduction to SKOS (Simple Knowledge Organization Systems) and its usage in the NSDL Metadata Registry, with some discussion of current challenges.
The document discusses the differences between Flex 3 and Flex 4 frameworks. It covers what is new in Flex 4 like Spark components, namespaces, data structures, skins and component architecture. It also discusses what has changed, like the framework, components and states. The document explains why developers should update to Flex 4 for better performance and support for future Flash players. It provides guidance on how to migrate code from Flex 3 to Flex 4 and common pitfalls to watch out for.
The document provides information about preparing for a technical interview, including:
- Check the company profile, areas of interest, and domain to understand what may be asked.
- Be prepared to discuss your fundamental computer engineering knowledge as well as one or two subjects you are interested in and knowledgeable about.
- Also prepare to discuss your past project work and the latest technologies.
- Key topics that may be covered include C, C++, data structures, algorithms, databases, operating systems, networks, and various programming languages.
- Understanding pointers, memory allocation functions, structures, unions, classes, inheritance and polymorphism in C/C++ is also important for technical interviews.
Share point 2013 coding standards and best practices 1.0LiquidHub
This document provides coding standards and best practices for developing SharePoint applications. It discusses efficient use of SharePoint data and objects, including caching objects and handling multithreaded environments. Specific recommendations are given for working with folders, lists, and deleting multiple versions of list items. The document also covers writing applications that scale to large numbers of users and using SPQuery objects. Best practices for disposing objects, exception handling, and accessing web and site objects are also outlined.
The document outlines the SharePoint 2013 upgrade process from SharePoint 2010 in three main steps:
1. Prepare the 2010 and 2013 farms by gathering information, cleaning up 2010, and setting up 2013.
2. Upgrade databases by copying them from 2010 to 2013, upgrading service application databases, and creating web applications before upgrading content databases.
3. Upgrade sites by running health checks, creating an evaluation site, and upgrading site collections after verifying readiness.
This document provides an overview of XLinks, which define linking between XML documents. It discusses that XLinks have two parts - XLink defines links between documents, while XPointer defines addressing within documents. The document then explores simple XLinks, which are similar to HTML links, including using XLink attributes and describing both local and remote resources. It also discusses extended XLinks and link behavior attributes that provide more functionality than HTML links.
Bt0067 c programming and data structures2Techglyphs
The document discusses various data structures and file input/output functions in C programming. It defines pointers and their advantages, describes the fread() function syntax, differentiates between linear and nonlinear data structures, discusses stack applications and operations, defines linked lists and their operations, and provides examples for each topic.
Oracle Text is a search technology built into Oracle Database that allows full-text searches of both structured and unstructured data. It provides features like Boolean search, stemming, thesaurus, and result ranking. The Oracle Text indexing process transforms documents into plain text, identifies sections, splits text into words or tokens, and builds an index mapping keywords to documents. Developers can customize the indexing process by defining their own data sources, filters, sectioners, and lexers.
This document contains instructions for an assignment for a Web Technologies course. It includes 6 questions related to TCP vs UDP, features of XML, components of an XML processor, fetching data from XML to HTML, categories of PHP operators, and Active Server Pages (ASP). The questions range from short definitions and comparisons to longer explanations and examples.
The document discusses best practices for translating DITA (Darwin Information Typing Architecture) content and using the xml:tm (XML-based text memory) standard. It recommends using a CMS, avoiding translatable attributes, keeping topics granular, and using xml:tm to maintain author and translation memories for reuse and alignment between source and translated content. xml:tm allows embedding of contextual information to link source and translated text segments for more accurate matching.
The document discusses the development of a text-assisted defence information extractor using open source software. It describes the various components used in information extraction like gazetteers, sentence splitters, tokenizers, part-of-speech taggers, transducers, and JAPE grammars. The extractor helps identify keywords related to defence from a collection of domain-specific text documents. Preliminary results are promising, though more refinement is underway including a GUI for querying and a dictionary to improve keyword searching.
This document provides instructions on how to write and compile LaTeX documents. It discusses the tools needed like pdflatex and how to use them to compile a .tex file into a .pdf file. It also covers how to structure the main document and chapters as separate files and include them. The document concludes with an overview of LaTeX and pdfLaTeX capabilities such as references, fonts, mathematics, and more.
This document provides instructions on how to write and compile LaTeX documents. It discusses the tools needed like pdflatex and how to use them to compile a .tex file into a .pdf file. It also covers how to structure the main document and chapters as separate files and include them. The document concludes with an overview of LaTeX and pdfLaTeX capabilities such as references, fonts, mathematics, and more.
This document provides instructions on how to write and compile LaTeX documents. It discusses the tools needed like pdflatex and how to use them to compile a .tex file into a .pdf file. It also covers how to structure the main document and chapters as separate files and include them. The document concludes with an overview of LaTeX and pdfLaTeX capabilities such as references, fonts, mathematics, and more.
The document discusses OAXAL (Open Architecture for XML Authoring and Localization) and xml:tm (XML-based Text Memory) as standards for authoring and localizing XML documents. It provides an overview of related standards like DITA, ITS, TMX, SRX, GMX, and XLIFF. It then describes how xml:tm uses these standards and creates an XML namespace to embed contextual information, link source and target texts, and automate workflows for translation and localization of XML documents.
MacAD.UK 2018: Your Code Should Document ItselfBryson Tyrrell
Slide deck for my presentation at MacAD.UK 2018. I this talk I cover how I use Python docstrings, reStructuredText, and Sphinx to generate human readable documentation from my code base, and then automate the creation of that documentation with ReadTheDocs.org.
**Some of the slides contained video that is not shown in this copy.**
Semantic RDF based integration framework for heterogeneous XML data sourcesDeniz Kılınç
The document describes a semantic RDF-based framework for integrating heterogeneous XML data sources. It proposes using regular expressions to define the structure of XML data semantically rather than through XPath, addressing issues with previous approaches. The framework includes a Regular Expression Generator Tool to produce regular expressions from local schemas and an Integrator Tool Box to combine the expressions into a global data source.
This document provides instructions for preparing a paper using the ENTCS macro style package. It explains that the prentcsmacro.sty or entcsmacro.sty files should be used and can be found at the ENTCS Macro Home Page. It also provides information on the document structure, including the frontmatter environment for the title, author names, abstract, and keywords, and describes some of the sectioning and environments that can be used, such as theorems, lemmas, definitions and algorithms.
XML (Extensible Markup Language) is a flexible way to create common information formats and share both the format and the data on the World Wide Web, intranets, wikis, configuration and elsewhere in a cloud.
This document discusses XML query language XPath and navigation. It describes how XPath allows querying XML documents by addressing elements and text using a path-like notation. XPath expressions are evaluated based on a context node and node-set. The document also covers XPointer for pointing to specific data within XML documents, and how XPath can be used with the XML DOM and XPathNavigator class in .NET.
This document provides an introduction to XML, including:
- XML stands for eXtensible Markup Language and allows users to define their own tags to provide structure and meaning to data.
- XML documents use elements with start and end tags to organize content in a hierarchical, tree-like structure. Elements can contain text or other nested elements.
- Attributes within start tags provide additional metadata about elements. Well-formed XML documents must follow syntax rules to be valid.
The document discusses combining XML vocabularies using namespaces to avoid name collisions. It describes:
1) Declaring a namespace by adding an xmlns attribute to an element, which assigns a unique URI to the namespace and associates elements with a prefix.
2) Applying namespaces to elements by inserting the namespace prefix before element names. This identifies which namespace each element belongs to.
3) Using default namespaces, which omit the prefix and assume child elements belong to the namespace declared on the parent element.
SKOS - 2007 Open Forum on Metadata Registries - NYCjonphipps
An brief introduction to SKOS (Simple Knowledge Organization Systems) and its usage in the NSDL Metadata Registry, with some discussion of current challenges.
The document discusses the differences between Flex 3 and Flex 4 frameworks. It covers what is new in Flex 4 like Spark components, namespaces, data structures, skins and component architecture. It also discusses what has changed, like the framework, components and states. The document explains why developers should update to Flex 4 for better performance and support for future Flash players. It provides guidance on how to migrate code from Flex 3 to Flex 4 and common pitfalls to watch out for.
The document provides information about preparing for a technical interview, including:
- Check the company profile, areas of interest, and domain to understand what may be asked.
- Be prepared to discuss your fundamental computer engineering knowledge as well as one or two subjects you are interested in and knowledgeable about.
- Also prepare to discuss your past project work and the latest technologies.
- Key topics that may be covered include C, C++, data structures, algorithms, databases, operating systems, networks, and various programming languages.
- Understanding pointers, memory allocation functions, structures, unions, classes, inheritance and polymorphism in C/C++ is also important for technical interviews.
Share point 2013 coding standards and best practices 1.0LiquidHub
This document provides coding standards and best practices for developing SharePoint applications. It discusses efficient use of SharePoint data and objects, including caching objects and handling multithreaded environments. Specific recommendations are given for working with folders, lists, and deleting multiple versions of list items. The document also covers writing applications that scale to large numbers of users and using SPQuery objects. Best practices for disposing objects, exception handling, and accessing web and site objects are also outlined.
The document outlines the SharePoint 2013 upgrade process from SharePoint 2010 in three main steps:
1. Prepare the 2010 and 2013 farms by gathering information, cleaning up 2010, and setting up 2013.
2. Upgrade databases by copying them from 2010 to 2013, upgrading service application databases, and creating web applications before upgrading content databases.
3. Upgrade sites by running health checks, creating an evaluation site, and upgrading site collections after verifying readiness.
SharePoint 2013 introduced new features like apps, social capabilities and improved search compared to SharePoint 2010. It moved to a new app model and deprecated sandbox solutions and visual upgrades. Several site templates were also removed like Document Workspace, Personalization Site and Meeting Workspaces to simplify template selection. Existing sites created with these templates will still function in SharePoint 2013 but may not be supported in future releases.
The document discusses new user interface features in SharePoint 2010, including the ribbon interface, status bar, notifications, dialog framework, improved page model, master pages, theming engine, and extensibility of these features. The ribbon replaces the command surfaces of SharePoint 2007 and can be customized. The status bar and notifications provide feedback without page reloads. Dialogs load pages within iframes to reduce page transitions. Sites function as collections of pages. Themes allow changing the look and feel by applying color and font changes defined in theme files.
Microsoft office-sharepoint-server-2007-presentation-120211522467022-2LiquidHub
The document discusses the challenges faced by information workers and how collaboration and content management technologies can help address them. It notes that information workers spend a significant amount of time on emails, searching for information, and coordinating work across different locations. New technologies aim to simplify working together, improve access to information and insights, securely manage content, and streamline business processes. The Microsoft Office System provides a platform to address these issues through features in SharePoint for documents, tasks, calendars, blogs, wikis, email integration, and more.
SharePoint 2010 allows users to tag list items, documents, pages, and external pages to help organize information using a flexible taxonomy system. Tags can be added to anything with a URL to help categorize and find content. Users can tag list items, documents, and SharePoint pages to add keywords and notes for categorization purposes.
This presentation provides an overview of FAST Search for SharePoint 2010. It discusses the server roles, single and multi-server deployments, SharePoint search service applications, visual and conversational search capabilities, user context, comparisons to SharePoint search, ways to extend search, and lessons learned. The presentation was delivered by Jacob Wilson from Bross Group.
This document provides guidance on deploying Microsoft Office SharePoint Server 2007 in a server farm environment. It discusses the following key points:
- Server farm deployments involve multiple dedicated servers and provide better performance and scalability than a single-server deployment.
- The deployment process involves three phases - deploying and configuring server infrastructure, creating and configuring Shared Services Providers (SSPs), and deploying and configuring SharePoint sites.
- Server farm topologies can range from a small configuration with two servers, to a large configuration with clustered database servers and multiple application and frontend servers.
- Proper planning is important before deployment, including acquiring necessary credentials and accounts, installing prerequisites, and config
This document provides instructions for database administrators to pre-install databases required by Microsoft Office SharePoint Server 2007 before beginning the installation or creation of a Shared Services Provider (SSP). It describes creating databases with the correct collation and owners, configuring SQL Server, and running commands to configure the databases and create the SSP.
This document provides guidance on deploying Microsoft Office SharePoint Server 2007 in a server farm environment. It discusses hardware and software requirements, installing SharePoint on the first server, adding additional servers to the farm, configuring a shared services provider, and creating site collections and SharePoint sites. It also covers optional steps like pre-installing databases, configuring single sign-on, and configuring the trace log for troubleshooting.
This document discusses backup strategies for Microsoft Office SharePoint Server (MOSS) 2007. It examines the native MOSS 2007 backup tools including the Recycle Bin, Central Administration backup, and command-line backup. It finds that the native tools lack automation, granularity, and robustness. The document then introduces AvePoint's DocAve software as a third-party backup solution. DocAve provides item-level backup and restore capabilities to address the shortcomings of the native MOSS 2007 backup tools.
How To Configure Email Enabled Lists In Moss2007 Rtm Using Exchange 2003LiquidHub
This document provides step-by-step instructions for configuring incoming email for document libraries in SharePoint 2007 using Exchange 2003. It describes setting up an organizational unit in Active Directory, installing the SMTP service on the SharePoint server, configuring incoming email settings in Central Administration, creating an email-enabled document library, and testing. Troubleshooting tips are also provided to address issues like duplicate emails or problems with attachments.
The Business Data Catalog (BDC) is a framework included with SharePoint Enterprise that allows integration of line-of-business systems like SAP and Oracle into SharePoint sites without requiring custom code. The BDC uses metadata to define entities, properties, and methods to retrieve read-only data from external systems using web services or SQL. Administrators import BDC metadata to create applications that provide out-of-the-box techniques for displaying and searching external data within SharePoint sites.
The Business Data Catalog (BDC) is a framework in SharePoint Server 2007 Enterprise Edition that allows integration of line-of-business systems and databases without custom coding. It uses metadata to define entities, methods, and associations for connecting to and retrieving read-only data from external systems via web services or ADO.NET. Administrators import BDC metadata to create applications that provide data to SharePoint sites using out-of-the-box web parts, columns, search, and profiles synchronization. Programmers can also access BDC entities through the object model.
This document provides demonstration steps for exploring document storage, management, and collaboration features in Windows SharePoint Services 3.0. It outlines steps to edit documents, create and add documents to libraries, apply version control, view version history, restore previous versions from the recycle bin, and edit task tracking lists. The demonstrations are organized into sections on document storage and management, collaboration technologies, and information management and communication.
This document provides an overview of Module 01 which introduces the Windows SharePoint Services 3.0 platform. It discusses common collaboration challenges organizations face, reasons solutions often fail, and how WSS addresses key business needs. The module contains two lessons - the first on WSS and collaboration challenges, the second on collaboration technologies in WSS like document storage, collaboration features, and information management.
This document describes steps to create a web service that inserts data into a SQL database, create an InfoPath form to submit data to the web service, and publish and deploy the InfoPath form. It includes:
1) Code for a C# web service that inserts student records into a database
2) Instructions for running the web service and testing it works
3) Steps to create an InfoPath form with controls to enter student data
4) Configuring the form to submit data to the web service using the URL
5) Publishing and saving the form so it can be used to insert records
Whats New In Microsoft Windows Share Point Services Feature WalkthroughLiquidHub
This document provides an overview and instructions for a lab on the new and enhanced features in Windows SharePoint Services (version 3). The lab consists of 9 exercises that cover topics such as site creation, administration, permissions, web parts, navigation, security, notifications, and Outlook integration. Completing the lab will help users learn about the updated features in WSS. The estimated time to complete all the exercises is 90 minutes using the MOSS computer.
Overviewofthe2007 Microsoft Office System Components RefreshLiquidHub
This document provides an overview of the 2007 Microsoft Office system components lab. The lab includes exercises that describe enhancements in Word 2007 and Excel 2007 for formatting documents and spreadsheets. It also describes new features in other Office 2007 applications like PowerPoint, Outlook, Access, and InfoPath. The lab uses three virtual machines - a domain controller, file server, and client system - and takes approximately 90 minutes to complete. Exercises in the lab guide students through tasks like applying styles, themes, and conditional formatting in Word and Excel to enhance documents and analyze data.
Organizingand Finding Resourceswith Office Share Point Server2007 RefreshLiquidHub
This document provides an overview and objectives for a Microsoft Virtual Labs exercise on organizing and finding resources with Office SharePoint Server 2007. The exercise includes 4 tasks that cover portal management, content targeting, personal SharePoint sites, and using the Colleagues Web Part. Learners will manage sites and libraries, create audiences, target content, configure user profiles and privacy settings on personal sites, and view colleague information. The lab utilizes 3 virtual machines - a domain controller, SharePoint server, and client computer.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on integration of Salesforce with Bonterra Impact Management.
Interested in deploying an integration with Salesforce for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Presentation of the OECD Artificial Intelligence Review of Germany
XML Bible
1. 17
CHAPTER
XPointers
✦ ✦ ✦ ✦
X Pointer, the XML Pointer Language, defines an
In This Chapter
addressing scheme for individual parts of an XML
document. XLinks point to a URI (in practice, a URL) that
Why use XPointers?
specifies a particular resource. The URI may include an
XPointer part that more specifically identifies the desired part
XPointer examples
or element of the targeted resource or document. This chapter
discusses XPointers.
Absolute location
This chapter is based on the March 3, 1998 working draft of terms
Caution
the XPointer specification. The broad picture presented
here is likely to be correct but the details are subject to Relative location
change. You can find the latest working draft at http:// terms
www.w3.org/TR/WD-xptr.
Relative location
term arguments
Why Use XPointers? String location terms
URLs are simple and easy to use, but they’re also quite
The origin absolute
limited. For one thing, a URL only points at a single, complete
location term
document. More granularity than that, such as linking to the
third sentence of the 17th paragraph in a document, requires
Purpose of spans
the author of the targeted document to manually insert named
anchors at the targeted location. The author of the document
✦ ✦ ✦ ✦
doing the linking can’t do this unless he or she also has write
access to the document being linked to.Even if the author
doing the linking can insert named anchors into the targeted
document, it’s almost always inconvenient.
It would be more useful to be able to link to a particular
element or group of elements on a page without having to
change the document you’re linking to. For example, given
a large page such as the complete baseball statistics of
Chapters 4 and 5, you might want to link to only one team or
one player. There are several parts to this problem. The first
part is addressing the individual elements. This is the part
that XPointers solve. XPointers allow you to target a given
element by number, name, type, or relation to other elements
in the document.
2. 592 Part IV ✦ Supplemental Technologies
The second part of the problem is the protocol by which a browser asks a Web server
to send only part of a document rather than the whole thing. This is an area of active
research and speculation. More work is needed. XPointers do little to solve this
problem, except for providing a foundation on which such systems can build. For
instance, the best effort to date are the so-called “byte range extensions to HTTP”
available in HTTP 1.1. So far these have not achieved widespread adoption, mostly
because Web authors aren’t comfortable specifying a byte range in a document.
Furthermore, byte ranges are extremely fragile. Trivial edits to a document, even
simple reformatting, can destroy byte range links. HTTP 1.1 does allow other range
units besides raw bytes (for example, XML elements), but does not require Web
servers or browsers to support such units. Much work remains to be done.
The third part of the problem is making sure that the retrieved document makes
sense without the rest of the document to go along with it. In the context of XML,
this effectively means the linked part is well-formed or perhaps valid. This is a
tricky proposition, because most XML documents, especially ones with nontrivial
prologs, don’t decompose well. Again, XPointers don’t address this. The W3C XML
Fragment Working Group is addressing this issue, but the work is only just
beginning.
For the moment, therefore, an XPointer can be used as an index into a complete
document, the whole of which is loaded and then positioned at the location
identified by the XPointer. In the long-term, extensions to both XML, XLink, HTTP,
and other protocols may allow more sophisticated uses of XPointers. For instance,
you might be able to quote a remote document by including only an XLink with an
XPointer to the paragraph you want to quote, rather than retyping the text of the
quote. You could include cross-references inside a document that automatically
update themselves as the document is revised. These uses, however, will have to
wait for the development of several next-generation technologies. For now, we must
be content with precisely identifying the part of a document we want to jump to
when following an XLink.
XPointer Examples
HTML links generally point to a particular document. Additional granularity, that is,
pointing to a particular section, chapter, or paragraph of a particular document, isn’t
well-supported. Provided you control both the linking and the linked document, you
can insert a named anchor into an HTML file at the position to which you want to
link. For example:
<H2><A NAME=”xpointers”>XPointers</A></H2>
You can then link to this particular position in the file by adding a # and the name
of the anchor into the link. For example, in a table of contents you might see:
<A HREF=”#xpointers”>XPointers</A>
3. 593
Chapter 17 ✦ XPointers
In practice, this solution is kludgy. It’s not always possible to modify the target
document so the source can link to it. The target document may be on a different
server controlled by someone other than the author of the source document. And
the author of the target document may change or move it without notifying the
author of the source.
Furthermore, named anchors violate the separation of markup from content.
Placing a named anchor in a document says nothing about the document or its
content. It’s just a marker for other documents to refer to. It adds nothing to the
document’s own content.
XLinks allow much more sophisticated connections between documents through
the use of XPointers. An XPointer can refer to a particular element of a document;
to the first, second, or 17th such element; to the first element that’s a child of a
given element; and so on. XPointers provide extremely powerful connections
between documents. They do not require the targeted document to contain
additional markup just so its individual pieces can be linked to.
Furthermore, unlike HTML anchors, XPointers don’t point to just a single point in
a document. They can point to ranges or spans. Thus, you can use an XPointer to
select a particular part of a document, perhaps so it can be copied or loaded into
a program.
Here are a few examples of XPointers:
root()
id(dt-xmldecl)
descendant(2,termref)
following(,termdef,term,CDATA Section)
html(recent)
id(NT-extSubsetDecl)
Each of these selects a particular element in a document. The document is not
specified in the XPointer; rather, the XLink specifies the document. The XLinks
you saw in the previous chapter did not contain XPointers, but it isn’t hard to add
XPointers to them. Most of the time you simply append the XPointer to the URI
separated by a #, just as you do with named anchors in HTML. For example, the
above list of XPointers could be suffixed to URLs and come out looking like the
following:
http://www.w3.org/TR/1998/REC-xml-19980210.xml#root()
http://www.w3.org/TR/1998/REC-xml-19980210.xml#id(dt-xmldecl)
http://www.w3.org/TR/1998/REC-xml-
19980210.xml#descendant(2,termref)
http://www.w3.org/TR/1998/REC-xml-
19980210.xml#following(,termdef,term,CDATA Section)
http://www.w3.org/TR/1998/REC-xml-19980210.xml#id(NT-
extSubsetDecl)
4. 594 Part IV ✦ Supplemental Technologies
Normally these are used as values of the href attribute of a locator element. For
example:
<locator
href=”http://www.w3.org/TR/1998/REC-xml-19980210.xml#root()”>
Extensible Markup Language (XML) 1.0
</locator>
You can use a vertical bar (|) instead of a # to indicate that you do not want the
entire document. Instead, you want only the part of the document referenced by
the XPointer. For example:
http://www.w3.org/TR/1998/REC-xml-19980210.xml|root()
http://www.w3.org/TR/1998/REC-xml-19980210.xml|id(dt-xmldecl)
http://www.w3.org/TR/1998/REC-xml-
19980210.xml|descendant(2,termref)
http://www.w3.org/TR/1998/REC-xml-
19980210.xml|following(,termdef,term,CDATA Section)
http://www.w3.org/TR/1998/REC-xml-19980210.xml|id(NT-
extSubsetDecl)
Whether the client is able to retrieve only a piece of the document is protocol
dependent. Most current Web browsers and servers aren’t able to handle the
sophisticated requests that these XPointers imply. However, this can be useful for
custom protocols that use XML as an underlying transport mechanism.
Absolute Location Terms
XPointers are built from location terms. Each location term specifies a point in the
targeted document, generally relative to some other well-known point such as the
start of the document or another location term. The type of location term is given
by a keyword such as id(), root(), or child().
Some location terms take arguments between the parentheses. To demonstrate the
point, it’s useful to have a concrete example in mind. Listing 17-1 is a simple, valid
document that should be self-explanatory. It contains information about two related
families and their members. The root element is FAMILYTREE. A FAMILYTREE can
contain PERSON and FAMILY elements. Each PERSON and FAMILY element has a
required ID attribute. Persons contain a name, birth date, and death date. Families
contain a husband, a wife, and zero or more children. The individual persons are
referred to from the family by reference to their IDs. Any child element may be
omitted from any element.
This XML application is revisited in Chapter 23, Designing a New XML Application.
Cross-
Reference
5. 595
Chapter 17 ✦ XPointers
Listing 17-1: A family tree
<?xml version=”1.0”?>
<!DOCTYPE FAMILYTREE [
<!ELEMENT FAMILYTREE (PERSON | FAMILY)*>
<!— PERSON elements —>
<!ELEMENT PERSON (NAME*, BORN*, DIED*, SPOUSE*)>
<!ATTLIST PERSON
ID ID #REQUIRED
FATHER CDATA #IMPLIED
MOTHER CDATA #IMPLIED
>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT BORN (#PCDATA)>
<!ELEMENT DIED (#PCDATA)>
<!ELEMENT SPOUSE EMPTY>
<!ATTLIST SPOUSE IDREF IDREF #REQUIRED>
<!—FAMILY—>
<!ELEMENT FAMILY (HUSBAND?, WIFE?, CHILD*) >
<!ATTLIST FAMILY ID ID #REQUIRED>
<!ELEMENT HUSBAND EMPTY>
<!ATTLIST HUSBAND IDREF IDREF #REQUIRED>
<!ELEMENT WIFE EMPTY>
<!ATTLIST WIFE IDREF IDREF #REQUIRED>
<!ELEMENT CHILD EMPTY>
<!ATTLIST CHILD IDREF IDREF #REQUIRED>
]>
<FAMILYTREE>
<PERSON ID=”p1”>
<NAME>Domeniquette Celeste Baudean</NAME>
<BORN>11 Feb 1858</BORN>
<DIED>12 Apr 1898</DIED>
<SPOUSE IDREF=”p2”/>
</PERSON>
<PERSON ID=”p2”>
<NAME>Jean Francois Bellau</NAME>
<SPOUSE IDREF=”p1”/>
</PERSON>
<PERSON ID=”p3” FATHER=”p2” MOTHER=”p1”>
<NAME>Elodie Bellau</NAME>
<BORN>11 Feb 1858</BORN>
Continued
7. 597
Chapter 17 ✦ XPointers
<FAMILY ID=”f1”>
<HUSBAND IDREF=”p2”/>
<WIFE IDREF=”p1”/>
<CHILD IDREF=”p3”/>
<CHILD IDREF=”p5”/>
<CHILD IDREF=”p6”/>
<CHILD IDREF=”p8”/>
<CHILD IDREF=”p10”/>
<CHILD IDREF=”p12”/>
</FAMILY>
<FAMILY ID=”f2”>
<HUSBAND IDREF=”p7”/>
<WIFE IDREF=”p6”/>
</FAMILY>
</FAMILYTREE>
In sections that follow, this document is assumed to be present at the URL
http://www.theharolds.com/genealogy.xml. This isn’t a real URL, but the
emphasis here is on selecting individual parts of a document rather than a
document as a whole.
id()
The id() location term is one of the simplest and most useful location terms. It
selects the element in the document that has an ID type attribute with a specified
value. For example, consider the URI http://www.theharolds.com/genealogy.
xml#id(p12). If you look back at Listing 17-1, you find this element:
<PERSON ID=”p12” FATHER=”p2” MOTHER=”p1”>
<NAME>Honore Bellau</NAME>
</PERSON>
Because ID type attributes are unique, you know there aren’t other elements
that match this XPointer. Therefore, http://www.theharolds.com/genealogy.
xml#id(p12) must refer to Honore Bellau’s PERSON element. Note that the XPointer
selects the entire element to which it refers, including all its children, not just the
start tag.
The disadvantage of the id() location term is that it requires assistance from the
targeted document. If the element you want to point to does not have an ID type
attribute, you’re out of luck. If other elements in the document have ID type
attributes, you may be able to point to one of them and use a relative XPointer
(discussed in the next section) to point to the one you really want. Nonetheless,
ID type attributes are best when you control both the targeted document and the
linking document, so you can ensure that the IDs match the links even as the
documents evolve and change over time.
8. 598 Part IV ✦ Supplemental Technologies
In some cases, such as a document without a DTD, a targeted document may not
have any ID type attributes, although it may have attributes named ID. In this case,
the application may (or may not) try to guess which element you were pointing at.
Generally it selects the first element in the document with an attribute of any type
and a name whose value matches the requested ID. On the other hand, the
application is free not to select any element.
root()
The root() location term points to the root element of the document. It takes
no arguments. For example, the root element of the XML 1.0 specification at
http://www.w3.org/TR/REC-xml is spec. Thus, to select it you can use this URI:
http://www.w3.org/TR/REC-xml#root()
The root() location term is primarily useful in compound XPointers as a basis
from which to start. In fact, if no absolute location term is included in a compound
location term, root() is assumed. However, root() can also be used to select the
entire document in a URI that uses | to indicate that only a part is normally loaded.
For example:
http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-
names.xml|root()
html()
The html() location term selects named anchors in HTML documents. It has
a single argument, the name of the anchor to which it refers. For example, the
following named anchor exists in the file http://metalab.unc.edu/xml/:
<a name=“quote”><font color=“#AA0000”>Quote of the Day</font></a>
The XPointer that refers to this element is:
http://metalab.unc.edu/xml#html(quote)
The html() location term primarily exists for backwards compatibility, that is,
to allow XLinks to refer to HTML documents. Named anchors may be used in XML
documents, provided all attribute values are quoted, the A element and its
attributes are declared in the DTD, and all other well-formedness criteria are met. In
general, however, XML has better means than named anchors to identify locations.
Relative Location Terms
id, root, and html are absolute location terms. Absolute location terms can find
a particular element in a document regardless of what else is in the document.
However, more commonly you want to find the first element of a given type, the
9. 599
Chapter 17 ✦ XPointers
last element of a given type, the first child of a particular type, the next element
of a given type, all elements of a given type, or something similar. These tasks are
accomplished by attaching a relative location term to an absolute location term to
form a compound locator.
The most general XPointer is a single absolute location term followed by any
number of relative location terms. Each term in the list is relative to the one that
precedes it, except for the first absolute location term. Terms in the list are
separated by periods.
For example, look at the family tree document in Listing 17-1. This fragment selects
the first NAME element of the sixth PERSON element in the root element:
http://www.theharolds.com/genealogy.xml#root().child(6,PERSON).
child(1,NAME)
In this example, that’s <NAME>Maria Bellau</NAME>.
For another example, suppose you want to link to the NAME element of Domeniquette
Celeste Baudean. The easiest way to do this is to identify her PERSON element by its
ID, p1, then use the child() relative location term to refer to the first (and only)
NAME child element, like this:
http://www.theharolds.com/genealogy.xml#id(p1).child(1,NAME)
This URI says to look at the document http://www.theharolds.com/genealogy.
xml, find its root element, then find the element with the ID p1, then select its first
NAME child.
Although geneaology.xml includes ID attributes for most elements, and although
they are convenient, they are not required for linking into the document. You
can select any element in the document simply by counting down from the root
element. Because Maria Bellau’s the first person in the document, you can count
one PERSON down from the root, then count one NAME down from that. This URI
accomplishes that:
http://www.theharolds.com/genealogy.xml#root().child(1,
PERSON).child(1,NAME)
This URI says to look at the document http://www.theharolds.com/genealogy.
xml, find its root element, then find the first PERSON element that’s an immediate
child of the root element, and then find its first NAME element.
If no absolute location term is included in the XPointer, then root() is assumed.
For instance, the previous example could have been written more compactly,
like this:
http://www.theharolds.com/genealogy.xml#child(1,PERSON).child
(1,NAME)
10. 600 Part IV ✦ Supplemental Technologies
You can compress this still further by omitting the second child location term
(though not its arguments). For example:
http://www.theharolds.com/genealogy.xml#child(1,PERSON).(1,NAME)
When the term is omitted this way, it is assumed to be the same as the previous
term. Because there’s no term in front of .(1, NAME), it’s assumed to be the same
as the previous one, child.
There are other powerful selection techniques, which are discussed below. In
fact, including child(), there are seven relative location terms. These are listed
in Table 17-1. Each serves to select a particular subset of the elements in the
document. For instance, the following relative location term selects from
elements that come after the source element. The preceding relative location
term selects from elements that come before the source element.
Table 17-1
Relative Location Terms
Term Meaning
child Selects from the immediate children of the source element
descendant Selects from any of the content or child elements of the source element
ancestor Selects from elements that contain the source element
preceding Selects from elements that precede the source element
following Selects from elements that follow the source element
psibling Selects from sibling elements that precede the source element
fsibling Selects from sibling elements that follow the source element
Because the relative location term alone is generally not enough to uniquely specify
which element is being pointed to, additional arguments are passed that further
specify the targeted element by instance number, node type, and attribute. The
possible arguments are the same for all seven relative location keywords. They are
explored in more detail in the “Relative Location Term Argument” section below.
child
The child relative location term selects from only the immediate children of the
source element. For example, consider this URI:
http://www.theharolds.com/genealogy.xml#root().child(6,NAME)
11. 601
Chapter 17 ✦ XPointers
This points nowhere because there are no NAME elements in the document that are
direct, immediate children of the root. There are a dozen NAME elements that are
indirect children. If you’d like to refer to these, you should use the descendant
relative locator element instead of child.
descendant
The descendant relative location term searches through all the descendants of the
source, not just the immediate children. For example, root().descendant(3,BORN)
selects the third BORN element encountered in a depth-first search of the document
tree. (Depth first is the order you get if you simply read through the XML document
from top to bottom.) In Listing 17-1, that selects Louise Pauline Bellau’s birthday,
<BORN>29 Oct 1868</BORN>.
ancestor
The ancestor relative location term searches through all the ancestors of the
source, starting with the nearest, until it finds the requested element. For example,
root().descendant(2,BORN).ancestor(1) selects the PERSON element, which
contains the second BORN element. In this example, it selects Elodie Bellau’s
PERSON element.
preceding
The preceding relative location term searches through all elements that occur
before the source element. The preceding locator element has no respect for
hierarchy. The first time it encounters an element’s start tag, end tag, or empty
tag, it counts that element. For example, consider this rule:
root().descendant(3,BORN).preceding(5)
This says go to Louise Pauline Bellau’s birthday, <BORN>29 Oct 1868</BORN>,
and then move back five elements. This lands on Maria Bellau’s PERSON element.
following
The following relative location term searches through all elements that occur
after the source element in the document. Like preceding, following has no
respect for hierarchy. The first time it encounters an element’s start tag, end tag,
or empty tag, it counts that element. For example, consider this rule:
root().descendant(2,BORN).following(5)
12. 602 Part IV ✦ Supplemental Technologies
This says go to Elodie Bellau’s birthday, <BORN>11 Feb 1858</BORN>, and
then move forward five elements. This lands on John P. Muller’s NAME element,
<NAME>John P. Muller</NAME>, after passing through Elodie Bellau’s DIED
element, Elodie Bellau’s SPOUSE element, Elodie Bellau’s PERSON element, and
John P. Muller’s PERSON element, in this order.
psibling
The psibling relative location term selects the element that precedes the source
element in the same parent element. For example, root().descendant(2,
BORN).psibling(1) selects Elodie Bellau’s NAME element, <NAME>Elodie
Bellau</NAME>. root().descendant(2, BORN).psibling(2) doesn’t point to
anything because there’s only one sibling of Elodie Bellau’s NAME element before it.
fsibling
The fsibling relative location term selects the element that follows the source
element in the same parent element. For example, root().descendant(2,born).
fsibling(1) selects Elodie Bellau’s DIED element, <DIED>12 Apr 1898</DIED>.
root().descendant(2,born).fsibling(3) doesn’t point to anything because
there are only two sibling elements following Elodie Bellau’s NAME element.
Relative Location Term Arguments
Each relative location term begins at a particular place in the document called the
location source. Generally the location source is indicated by an absolute location
term (or the root if no absolute term is specified). You then search forward or
backward in the document for the first match that meets specified criteria.
Criteria are given as a list of arguments to the relative location term. These may
include the number of elements to search forward or backward, the type of thing to
search (element, comment, processing instruction, and so on), and/or the value of
an attribute to search. These are given in this order:
1. number
2. type
3. attribute
The number is a positive or negative integer that counts forward or backward
from the location source. The type is the kind of thing to count, and the attribute is
a list of attribute names and values to match. A relative location term can have a
number; a number and a type; or a number, a type, and an attribute list.
13. 603
Chapter 17 ✦ XPointers
The arguments that are present are separated by commas and no whitespace. For
example:
child(1,PERSON,FATHER,p2)
The no-whitespace requirement is unusual. It exists so that XPointers can easily be
attached to the ends of URLs. For example:
http://www.theharolds.com/genealogy.xml#child(1,PERSON,FATHER,p2)
If whitespace were allowed, the URLs would have to be x-form-www-url-encoded,
like this:
http://www.theharolds.com/genealogy.xml#child(1,%20PERSON,
%20FATHER,%20p2)
For the most part, the same syntax applies to all seven relative location terms.
Selection by Number
The simplest form of selection is by number. The first argument to a relative
location term is the index of the node you’re pointing at. Positive numbers count
forward in the document. Negative numbers count backward. You also can use the
all keyword to point to all nodes that match the condition.
Number Forward
For instance, in Listing 17-1 the FAMILYTREE element is the root. It has 14 immediate
children, 12 PERSON elements, and two FAMILY elements. In order, they are:
http://www.theharolds.com/genealogy.xml#root().child(1)
http://www.theharolds.com/genealogy.xml#root().child(2)
http://www.theharolds.com/genealogy.xml#root().child(3)
http://www.theharolds.com/genealogy.xml#root().child(4)
http://www.theharolds.com/genealogy.xml#root().child(5)
http://www.theharolds.com/genealogy.xml#root().child(6)
http://www.theharolds.com/genealogy.xml#root().child(7)
http://www.theharolds.com/genealogy.xml#root().child(8)
http://www.theharolds.com/genealogy.xml#root().child(9)
http://www.theharolds.com/genealogy.xml#root().child(10)
http://www.theharolds.com/genealogy.xml#root().child(11)
http://www.theharolds.com/genealogy.xml#root().child(12)
http://www.theharolds.com/genealogy.xml#root().child(13)
http://www.theharolds.com/genealogy.xml#root().child(14)
Greater numbers, such as http://www.theharolds.com/genealogy.
xml#root().child(15), don’t point anywhere. They’re just dangling URLs.
14. 604 Part IV ✦ Supplemental Technologies
To count all elements in the document, not just the immediate children of the
root, you can use descendant instead of child. Table 17-2 shows the first four
descendant XPointers for Listing 17-1, and what they point to. Note especially that
root().descendant(1) points to the entire first PERSON element, including its
children, and not just the PERSON start tag.
Table 17-2
The First Four Descendants of the Root
XPointer Points To
root().descendant(1) <PERSON ID=”p1”>
<NAME>Domeniquette Celeste
Baudean</NAME>
<BORN>11 Feb 1858</BORN>
<DIED>12 Apr 1898</DIED>
<SPOUSE IDREF=”p2”/>
</PERSON>
root().descendant(2) <NAME>Domeniquette Celeste Baudean</NAME>
root().descendant(3) <BORN>11 Feb 1858</BORN>
root().descendant(4) <DIED>12 Apr 1898</DIED>
Number Backward
Negative numbers enable you to move backward from the current element to the item
you’re pointing at. In the case of child and descendant, they count backward from
the end tag of the element rather than forward from the start tag. For example, this
XPointer selects the element that immediately precedes the element with the ID f1:
http://www.theharolds.com/genealogy.xml#id(f1).following(-1)
In this example, that’s the PERSON element for Honore Bellau. In general, however,
your links will be clearer if you avoid negative numbers when possible and use an
alternate selector. For example, this selects the same element:
http://www.theharolds.com/genealogy.xml#id(f1).preceding(1)
In tree-oriented selectors such as child and descendant, negative numbers
indicate that you should count from the end of the parent rather than the
beginning. For example, this points at the last PERSON element in the document:
http://www.theharolds.com/genealogy.xml#root().child(-1,person)
15. 605
Chapter 17 ✦ XPointers
This points at the penultimate PERSON element in the document:
http://www.theharolds.com/genealogy.xml#root().child(-2,person)
Table 17-3 shows the last four descendant XPointers for Listing 17-1, and what they
point to. Note that the order in which the elements are entered is now established
by the end tags rather than the start tags.
Table 17-3
The Last Four Descendants of the Root
XPointer Points To
root().descendant(1) <FAMILY ID=”f2”>
<HUSBAND IDREF=”p7”/>
<WIFE IDREF=”p6”/>
</FAMILY>
root().descendant(2) <WIFE IDREF=”p6”/>
root().descendant(3) <HUSBAND IDREF=”p7”/>
root().descendant(4) <FAMILY ID=”f1”>
<HUSBAND IDREF=”p2”/>
<WIFE IDREF=”p1”/>
<CHILD IDREF=”p3”/>
<CHILD IDREF=”p5”/>
<CHILD IDREF=”p6”/>
<CHILD IDREF=”p8”/>
<CHILD IDREF=”p10”/>
<CHILD IDREF=”p12”/>
</FAMILY>
all
As well as specifying a number to select, you can use the keyword all. This points
to all nodes that match a condition. For example, this rule refers to all children of
the element with ID f1:
http://www.theharolds.com/genealogy.xml#id(f1).child(all)
16. 606 Part IV ✦ Supplemental Technologies
In other words, this points to:
<HUSBAND IDREF=”p2”/>
<WIFE IDREF=”p1”/>
<CHILD IDREF=”p3”/>
<CHILD IDREF=”p5”/>
<CHILD IDREF=”p6”/>
<CHILD IDREF=”p8”/>
<CHILD IDREF=”p10”/>
<CHILD IDREF=”p12”/>
Selection by Node Type
The above rules chose particular elements in the document. However, sometimes
you want to select the fifth WIFE or the third PERSON while ignoring elements of
other types. Selecting these by instance number alone is prone to error if the
document changes. The addition or deletion of a single element in the wrong place
can misalign all links that rely only on instance numbers.
Occasionally you may want to select processing instructions, comments, CDATA
sections, or particular raw text in a document. You can accomplish this by adding a
second argument to the relative location term — after the number — that specifies
which nodes you’re counting and (implicitly) which you’re ignoring. This can be the
name of the element you want to point to or one of six keywords listed in Table 17-4.
Table 17-4
Possible Second Arguments for Relative Location Terms
Type Match
#element Any element
#pi Any processing instruction
#comment Any comment
#text Any nonmarkup character data
#cdata CDATA sections
#all All of the above
Elements with the specified name
Name
Most selection rules include the type of the element sought. You’ve already seen
examples where root().child(6, PERSON) selects the sixth PERSON child of
root. This may refer to the wrong individual if a PERSON element is added or
deleted, but at least it is a PERSON element instead of something else like a FAMILY.
17. 607
Chapter 17 ✦ XPointers
You can also specify just a type and omit the instance number (though not the
comma). For example, this URI selects all PERSON elements in the document
regardless of position:
http://www.theharolds.com/genealogy.xml#root().child(,PERSON)
Pay special attention to the orphaned comma in front of PERSON. It is required by
the BNF grammar in the current version of the XPointer specification. Its presence
makes it slightly easier for programs to parse the XPointer, even if it makes it
harder for humans to read the XPointer.
Exactly what the application does when all PERSON elements are targeted is up to the
application. In general, something more complex than merely loading the document
and positioning it at the targeted element is suggested, since there is more than one
targeted element. If the application uses this fragment to decide which parts of a
document to load, then it loads all the elements of the specified type.
However, this is unusual. Most of the time, selection by type is only used to further
restrict the elements selected until only a single one remains targeted.
Name
The most common use for the second argument to a relative location term is to
provide a name for the element type. For instance, suppose you want to point
to the first FAMILY element that’s a child of the root element, but you don’t know
how it’s intermixed with PERSON elements. This rule accomplishes that:
http://www.theharolds.com/genealogy.xml#root().child(1,FAMILY)
This is particularly powerful when you chain selection rules. For example, this
points to the second CHILD element of the first FAMILY element:
http://www.theharolds.com/genealogy.xml#root().child(1,FAMILY).
child(2,CHILD)
In fact, it’s more common to specify the type of the element you’re selecting than
not to specify it. This is especially true for relative location terms that don’t respect
hierarchy such as following and preceding.
#element
If no second argument is specified, then elements are matched, but processing
instructions, comments, CDATA sections, character data, and so forth are not
matched. You can replicate this behavior with the keyword #element as the
second argument. For example, these two URIs are the same:
http://www.theharolds.com/genealogy.xml#id(f2).preceding(1)
http://www.theharolds.com/genealogy.xml#id(f2).preceding
(1,#element)
18. 608 Part IV ✦ Supplemental Technologies
The main reason to use #element is so you can then use a third argument to match
against attributes.
#text
The #text argument selects raw text inside an element. It’s most commonly used
with mixed content. For example, consider this CITATION element from Listing 12-3
in Chapter 12:
<CITATION CLASS=”TURING” ID=”C2”>
<AUTHOR>Turing, Alan M.</AUTHOR>
“<TITLE>On Computable Numbers,
With an Application to the Entscheidungs-problem</TITLE>”
<JOURNAL>
Proceedings of the London Mathematical Society</JOURNAL>,
<SERIES>Series 2</SERIES>,
<VOLUME>42</VOLUME>
(<YEAR>1936</YEAR>):
<PAGES>230-65</PAGES>.
</CITATION>
The following XPointer refers to the quotation mark before the TITLE element.
id(C2).child(2,#text)
The first text node in this fragment is the whitespace between <CITATION
CLASS=”TURING” ID=”C2”> and <AUTHOR>. Technically, this XPointer refers to all
text between </AUTHOR> and <TITLE>, including the whitespace and not just the
quotation mark.
XPointers that point to text nodes are tricky. I recommend you avoid them if possi-
Caution
ble, just as you should avoid mixed content. Of course, you may not always be
able to, especially if you need to point to parts of documents written by other
authors who don’t follow this best practice.
Because character data does not contain child elements, further relative location
terms may not be attached to an XPointer that follows one that selects a text node.
Since character data does not have attributes, attribute arguments may not be used
after #text.
#cdata
The #cdata argument specifies that a CDATA section (more properly, the text of a
CDATA section) is to be selected. For example, this XPointer refers to the second
CDATA section in a document:
root().following(2,#cdata)
19. 609
Chapter 17 ✦ XPointers
Because CDATA sections cannot have children, further relative location terms may not
be attached to an XPointer that follows one that selects a CDATA section. Since CDATA
sections do not have attributes, attribute arguments may not be used after #cdata.
#pi
On rare occasions you may want to select a processing instruction rather than
an element. In this case, you can use #pi as the second argument to the location
term. For example, this XPointer selects the second processing instruction in the
document’s third BEAN element:
root().descendant(3,BEAN).child(2,#pi)
Because processing instructions do not contain attributes or elements, you cannot
add an additional relative location term after the first term that selects a processing
instruction. However, you can use a string() location term to select part of the
text of the processing instruction.
#comment
XPointers point to comments in much the same way they point to processing
instructions. The literal #comment is used as the second argument to the location
term. For example, this XPointer points to the third comment in Listing 17-1:
http://www.theharolds.com/genealogy.xml#descendant(3,#comment)
Because comments do not contain attributes or elements, you cannot add an
additional relative location term after the first term that selects a processing
instruction. You can use a string() location term to select part of the text of
the processing instruction.
#all
On very rare occasions, you may wish to select a particular node in a document
regardless of whether it’s an element, raw character data, a processing instruction,
a CDATA section, or a comment. The only reason I can think of to do this is if you’re
iterating through all nodes in the document or element. By using #all as the second
argument to a relative location term, you can ignore the type of the thing you’re
matching. For example, consider this fragment from Listing 12-3 in Chapter 12:
<CITATION CLASS=”TURING” ID=”C3”>
<AUTHOR>Turing, Alan M.</AUTHOR>
“<TITLE>Computing Machinery & Intelligence</TITLE>”
<JOURNAL>Mind</JOURNAL>
<VOLUME>59</VOLUME>
(<MONTH>October</MONTH>
<YEAR>1950</YEAR>):
<PAGES>433-60</PAGES>
</CITATION>
20. 610 Part IV ✦ Supplemental Technologies
Table 17-5 lists four XPointers that simply count nodes down from the CITATION
element. It also lists what is pointed to by the XPointers.
Table 17-5
The First Four XPointer Nodes of the CITATION Element
XPointer Points To
id(C3).following(1,#all) the whitespace between <CITATION
CLASS=”TURING” ID=”C3”> and <AUTHOR>
id(C3).following(2,#all) <AUTHOR>Turing, Alan M.</AUTHOR>
id(C3).following(3,#all) Turing, Alan M.
id(C3).following(4,#all)
“
Selection by Attribute
You can add third and fourth arguments to relative location terms to point to
elements by attributes. The third argument is the attribute name. The fourth
argument is the attribute value. For example, to find the first PERSON element in
the document http://www.theharolds.com/genealogy.xml whose FATHER
attribute is Jean Francois Bellau (ID p2), you could write:
root().child(1,PERSON,FATHER,p2)
If you include a third argument, you must include a fourth argument. You can’t
match against an attribute name without also matching against an attribute value.
However, you can use an asterisk for either the name or the value to indicate that
anything matches. Setting the third argument to an asterisk (*) indicates that any
attribute name is allowed. For example, this XPointer selects all elements that have
an attribute value of p2 for any attribute:
root().child(all,#element,*,p2)
This rule selects the first PERSON element in the document that has an attribute
value of p2, regardless of whether that attribute appears as a FATHER, a MOTHER,
an ID, or something else.
root().child(1,PERSON,*,p2)
In Listing 17-1, this is Jean Francois Bellau’s PERSON element.
Setting the fourth argument to an asterisk (*) indicates that any value is allowed,
including a default value read from the ATTLIST declaration in the DTD. For
21. 611
Chapter 17 ✦ XPointers
example, this rule selects the first element in the document that has a FATHER
attribute:
root().child(1,#element,FATHER,*)
In Listing 17-1, this is Elodie Bellau’s PERSON element.
You can use #IMPLIED as the fourth argument to match against attributes that
don’t have a value, either directly specified or defaulted. For instance, this rule
finds the first PERSON element that doesn’t have a FATHER attribute:
root().child(1,PERSON,FATHER,#IMPLIED)
In Listing 17-1, this is Domeniquette Celeste Baudean’s PERSON element.
Attribute arguments only work on relative location terms that select an element.
You cannot use them when the second argument is #text, #cdata, #pi, or
#comment because these nodes do not have attributes.
String Location Terms
Selecting a particular element is almost always good enough for pointing into
well-formed XML documents. However, on occasion you need to point into non-XML
data or XML data in which large chunks of non-XML text is embedded via CDATA
sections, comments, processing instructions, or some other means. In these cases
you may need to refer to particular ranges of text in the document that don’t map
onto any particular markup element. You can use a string location term to do this.
A string location term points to an occurrence of a specified string. Unlike most
other location terms, a string location term can point to locations inside comments,
CDATA, and the like. For example, this fragment finds the first occurrence of the
string “Harold” in Listing 17-1:
http://www.theharolds.com/genealogy.xml#string(1,”Harold”)
This targets the position immediately preceding the H in Harold in Charles Walter
Harold’s NAME element. This is not the same as pointing at the entire NAME element
as an element-based selector would do.
You can add an optional third position argument to specify how many characters to
target to the right of the beginning of the matched string. For example, this targets
whatever immediately follows the first occurrence of the string “Harold” because
Harold has six letters:
http://www.theharolds.com/genealogy.xml#string(1,”Harold”,6)
22. 612 Part IV ✦ Supplemental Technologies
An optional fourth argument specifies the number of characters to select. For
example, this URI selects the first occurrence of the entire string “Harold” in
Listing 17-1:
http://www.theharolds.com/genealogy.xml#string(1,”Harold”,1,6)
Use the empty string (“”) in a string location term to specify particular characters
in the document. For example, the following URI targets the 256th character in the
document. (To be precise, it targets the position between the 255th and 256th
element in the document.)
http://www.theharolds.com/genealogy.xml#string(256, “”)
When matching strings, case and whitespace are considered. Markup characters
are ignored.
Instead of requesting a particular instance of a particular string match, you can
ask for all of them by using the keyword all as the first argument. For example,
this rule selects all occurrences of the string “Bellau” in the document:
http://www.theharolds.com/genealogy.xml#string(all,”Bellau”)
This can result in a noncontiguous selection, which many applications may not
understand, so use this technique with caution.
The origin Absolute Location Term
The fourth absolute location term is origin. However, it’s only useful when used in
conjunction with one or more relative location terms. In intradocument links, that
is, links from one point in a document to another point in the same document, it’s
often necessary to refer to “the next element after this one,” or “the parent element
of this element.” The origin absolute location term refers to the current element
so that such references are possible.
Consider Listing 17-2, a simple slide show. In this example, origin().following
(1,SLIDE) refers to the next slide in the show. origin().preceding(1,SLIDE)
refers to the previous slide in the show. Presumably this would be used in
conjunction with a style sheet that showed one slide at a time.
Listing 17-2: A slide show
<?xml version=”1.0”?>
<SLIDESHOW>
<SLIDE>
<H1>Welcome to the slide show!</H1>
<BUTTON xml:link=”simple”
23. 613
Chapter 17 ✦ XPointers
href=”origin().following(1,SLIDE)”>
Next
</BUTTON>
</SLIDE>
<SLIDE>
<H1>This is the second slide</H1>
<BUTTON xml:link=”simple”
href=”origin().preceding(1,SLIDE)”>
Previous
</BUTTON>
<BUTTON xml:link=”simple”
href=”origin().following(1,SLIDE)”>
Next
</BUTTON>
</SLIDE>
<SLIDE>
<H1>This is the second slide</H1>
<BUTTON xml:link=”simple”
href=”origin().preceding(1,SLIDE)”>
Previous
</BUTTON>
<BUTTON xml:link=”simple”
href=”origin().following(1,SLIDE)”>
Next
</BUTTON>
</SLIDE>
<SLIDE>
<H1>This is the third slide</H1>
<BUTTON xml:link=”simple”
href=”origin().preceding(1,SLIDE)”>
Previous
</BUTTON>
<BUTTON xml:link=”simple”
href=”origin().following(1,SLIDE)”>
Next
</BUTTON>
</SLIDE>
...
<SLIDE>
<H1>This is the last slide</H1>
<BUTTON xml:link=”simple”
href=”origin().preceding(1,SLIDE)”>
Previous
</BUTTON>
</SLIDE>
</SLIDESHOW>
Generally, the origin() location term is only used in fully relative URIs in XLinks. If
any URI part is included, it must be the same as the URI of the current document.
24. 614 Part IV ✦ Supplemental Technologies
Spanning a Range of Text
In some applications it may be important to specify a range of text rather than a
particular point in a document. This can be accomplished via a span. A span begins
at one XPointer and continues until another XPointer.
A span is indicated by the keyword span() used as a location term. However, the
arguments to span() are two location terms separated by a comma identifying the
beginning and end of the span. If these are relative location terms, then the term
preceding the span is the source for both terms.
For example, suppose you want to select everything between the first PERSON element
and the last PERSON element in genealogy.xml. This XPointer accomplishes that:
root().span(child(1,PERSON),child(-1,PERSON))
Summary
In this chapter you learned about XPointers. In particular you learned:
✦ XPointers refer to particular parts of or locations in XML documents.
✦ The id absolute location term points to an element with a specified value for
an ID type attribute.
✦ The root absolute location term points to the root element of an XML
document.
✦ The html absolute location term points to a named anchor in an HTML
document.
✦ Relative location terms can be chained to make more sophisticated
compound selectors. The term to which a term is relative is called the
location source.
✦ The child relative location term points to an immediate child of the location
source.
✦ The descendant relative location term points to any element contained in the
location source.
✦ The ancestor relative location term points to an element that contains the
location source.
✦ The preceding relative location term points to any element that comes
before the location source.
✦ The following relative location term points to any element following the
location source.
25. 615
Chapter 17 ✦ XPointers
✦ The psibling relative location term selects from sibling elements that
precede the target element.
✦ The fsibling relative location term selects from sibling elements that follow
the target element.
✦ Each relative location term has between one and four arguments: a number, a
type, an attribute name, and an attribute value.
✦ The first argument to a relative location term is a number determining the
relative position of the targeted node or the keyword all.
✦ The second argument to a relative location term determines the type of the
targeted node and may be the name of the element or one of the keywords
#element, #pi, #comment, #text, #cdata, #all.
✦ The third argument to a relative location term determines the name of the
attribute possessed by the targeted node.
✦ The fourth argument to a relative location term determines the value of an
attribute of the targeted node.
✦ The string location term points to a specified block of text in the location
source.
✦ The origin absolute location term points to the current element.
✦ Spans refer to a range of text instead of merely one particular element.
The next chapter explores namespaces. Namespaces use URIs as a means of sorting
out the elements in a document that’s formed from multiple XML applications.
For example, namespaces allow you to simultaneously use two different XML
vocabularies that define the same elements in incompatible ways.
✦ ✦ ✦