JCR Browser
Beginning in version R28, XperienCentral no longer uses the Apache Jackrabbit JCR indexing solution by default. This topic is only relevant to users of XperienCentral versions R27 and lower or if you configure XperienCentral to use Apache Jackrabbit. See The XperienCentral JCR Index for more information.
The JCR browser is a tool for exploring the Java Content Repository (JCR) used by XperienCentral to store website data. It allows you to browse through the repository by expanding/collapsing sub trees in the same way as with File Explorer in Microsoft Windows. You can perform the following operations on JCR tree items:
- Nodes - you can create, move and delete.
- Properties - you can create, edit and delete.
Due to node type definitions, the JCR browser cannot perform all operations on every node. If you try to create an improper child node or property, the JCR browser will return an error. Additonally, you can perform queries on the JCR tree. With queries you can search for specific content. The JCR browser supports the XPath and SQL syntaxes.
See also Xpath JCR Sample Queries.
Some of the actions you can perform in the JCR Browser, such as deleting nodes and/or their attributes or properties could have an adverse affect on your website. Be especially careful when performing such actions.
In This Topic
Introduction to JCR
Using the XperienCentral JCR Browser
To start and use the JCR Browser, follow these steps:
- Navigate to Configuration > JCR Browser.
- Select the [JCR Browser] tab.
- Browse through the tree by expanding or collapsing node sub trees in the "JCR Repository" section.. To expand a node, click + (plus) and to collapse it click – (minus).
- To select a node, click its icon or name. The attributes of the selected node and the properties it contains, are shown at the right.
Display Tree Property
In the tree view, the name of each node is shown. However, in certain cases the actual node name is different from what is shown in the tree view. In these cases, you need to look at the attributes to see the actual name of the node. The name is shown in the "Display tree property" field. By default it is set to wm:name
. This means that for each node the tree viewer tries to find a wm:name
property. If a property is present, the value of this property will be shown. If not, the actual node name will be shown.
For example: when you execute the XPath query //element(*, wo:global)
, the result may be a node that is labeled as follows:
- If the "Display tree property" field is empty, you may see something similar to
751b14124e9caf40ed6c7822d6de
. If you expand the tree, you may see something likewo:edit
for the child node. - If the "Display tree property" field is set to
wm:name
, you may see something likeglobal
. If you expand the tree, you may see something likeedit
for the child node.
Sort by Name
Select "Sort by name" to view the nodes in the tree in alphabetical order.
Node Attributes
When you select a node, the following attributes are shown in the "Node Attributes" section:
Attribute | Description |
---|---|
Name | The name of the node. |
Value (primary item) | This attribute is not used in XperienCentral. It is "undefined" for all nodes. |
Path | The path the node belongs to. This is relative to the depth 1 parent mode of the current node. The root node is not shown in the path. |
UUID | The hexadecimal identifier of the node, 1b8c88d37f0000020084433d3af4941f , for example. |
Depth | The depth of the node relative to the root node. The first depth is 1. The depth of the root node is 0 and is the only node with this value. |
Primary node type | The node's type. See http://jackrabbit.apache.org/jcr/node-types.html for an explanation of the possible node types. |
Node Properties
When you select a node, the following attributes are shown in the "Node Properties" section:
Property | Description |
---|---|
Name | The name of the node. |
Type | This attribute is not used in XperienCentral. It is "undefined" for all nodes. |
Value | The path the node belongs to. This is relative to the depth 1 parent mode of the current node. The root node is not shown in the path. |
DeleteUUID | The hexadecimal identifier of the node, 1b8c88d37f0000020084433d3af4941f , for example. |
Depth | The depth of the node relative to the root node. The first depth is 1. The depth of the root node is 0 and is the only node with this value. |
Primary node type | The node's type. See http://jackrabbit.apache.org/jcr/node-types.html for an explanation of the possible node types. |
Following a Tree Reference
If a property is a reference in the JCR tree, its value is shown as a link. Click on the link to navigate to the referenced node in the JCR tree. For example:
Operations with Nodes
Creating a Node
To create a new node, follow these steps:
- Select the node for which the new (sub) node will be created.
- Press the [Add node] button. The "Create node" section appears:
- Select the node type to create from the "Node type" drop-down list.
- Enter the node name.
- Click [Create node]. The node is added as a child to the currently selected node in the JCR tree.
Moving a Node
To move a node, follow these steps:
- Select the node to be moved.
- Click [Cut] in the "Actions" section.
- Select the destination node.
- Click [Paste] in the "Actions" section. The node, including its properties and subtrees, are moved to the destination.
Deleting a Node
To delete a node, follow these steps:
- Select the node to be deleted.
- Click [Delete] in the "Actions" section. You are prompted to confirm the action.
- Click [OK]. The node, including its properties and subtrees, are deleted.
Operations with Node Properties
Creating a Property
To create a new property for a node, follow these steps:
- Select the node for which the property is to be created.
- Press the [Add property] button. The "Add property" section appears.
- From the pull-down menu, select the definition of the property to be created.
- Enter the name of the property.
- From the pull-down menu, select the type of the property to be created.
- To define a multi-value property, select "Multiple". The [Add value] button appears.
- Enter the (first) value of the property.
- Press the [Add] button. The property is added.
- For multi-value properties, enter the next value and then click [Add value].
Editing a Property
To edit a node property, follow these steps:
- Click [Edit] next to the property you want to edit. The "Edit property" section appears.
- Make the desired changes.
- Press [Set]. The property is changed.
By clicking [Add value] instead of [Set] you create a new instance of the property.
Deleting a Property
To delete a node property, follow these steps:
- Select the "Delete" checkbox next to the property to be deleted.
- Click [Delete]. You are prompted to confirm.
- Click [OK]. The property is deleted.
Executing JCR Queries
By way of example, the JCR browser is provided with a list of pre-programmed XPath and SQL queries. To this list, you can add your own queries. Your queries are saved and you can edit them at a later time. To execute a query, you just select one from the list, modify it and then execute it.
Creating or Editing a Query
- Select the JCR Queries tab.
- From the Queries pull-down menu, select ‘New query’, or an existing query. Notice that you cannot edit preprogrammed queries.
- Enter or change the name of the query.
- Select the query syntax type "Xpath" or "SQL".
- Enter or change the actual query.
- Click [Apply] to save the query on the list.
Query Examples: SQL Versus XPath
SQL | XPath |
---|---|
SELECT * FROM nt:base | //* |
SELECT * FROM my:type | //element(*, my:type) |
SELECT my:title FROM my:type | //element(*, my:type)/@my:title |
SELECT my:title, my:text FROM my:type | //element(*, my:type)/ (@my:title | @my:text) |
SELECT * FROM my:type WHERE jcr:path LIKE '/nodes[%]/%' | /jcr:root/nodes// element(*, my:type) |
SELECT * FROM my:type WHERE my:title='JSR 170' | //element(*, my:type) [@my:title = 'JSR 170'] |
SELECT * FROM my:type WHERE my:title <> 'JSR 170' | //element(*, my:type) [@my:title != 'JSR 170'] |
SELECT * FROM my:type WHERE my:title = 'JSR 170' AND my:author = 'David' | //element(*, my:type) [@my:title = 'JSR 170' and @my:author = 'David'] |
SELECT * FROM my:type WHERE NOT (my:title = 'JSR 170') | //element(*, my:type) [not(@my:title = 'JSR 170')] |
SELECT * FROM my:type WHERE my:title IS NOT NULL | //element(*, my:type) [@my:title] |
SELECT * FROM my:type WHERE my:title IS NULL | //element(*, my:type) [not(@my:title)] |
SELECT * FROM my:type WHERE my:title LIKE 'JSR 170%' | //element(*, my:type) [jcr:like(@my:title, 'JSR 170%')] |
SELECT * FROM my:type WHERE CONTAINS(*, 'JSR 170') | //element(*, my:type) [jcr:contains(., 'JSR 170')] |
SELECT * FROM my:type WHERE jcr:path LIKE'/some[%]/nodes[%]' | /jcr:root/some/ element(nodes, my:type) |
SELECT * FROM my:type WHERE jcr:path = '/some/nodes' | /jcr:root/some[1]/element(nodes, my:type)[1] |
SELECT * FROM my:type WHERE jcr:path LIKE '/some[%]/nodes[%]/%' AND NOT jcr:path LIKE '/some[%]/nodes[%]/%/%' | /jcr:root/some/nodes/ element(*, my:type) |
SELECT * FROM my:type WHERE jcr:path LIKE '/some/nodes/%' AND NOT jcr:path LIKE '/some/nodes/%/%' | /jcr:root/some[1]/nodes[1]/ element(*, my:type) |
SELECT * FROM my:type WHERE jcr:path LIKE '/some[%]/nodes[%]/%' | /jcr:root/some/nodes// element(*, my:type) |
SELECT * FROM my:type WHERE jcr:path LIKE '/some/nodes/%' | /jcr:root/some[1]/nodes[1]// element(*, my:type) |
SELECT * FROM my:type WHERE jcr:path LIKE '/some[%]/nodes[%]' OR jcr:path LIKE '/some[%]/nodes[%]/%' | /jcr:root/some/nodes// element(*, my:type) |
SELECT * FROM my:type WHERE jcr:path = '/some/nodes' OR jcr:path LIKE '/some/nodes/%' | /jcr:root/some[1]/nodes[1]// element(*, my:type) |
Deleting a Query from the List
- Select the JCR Queries tab.
- From the Queries pull-down menu, select the query you want to delete. Notice that you cannot delete pre-programmed queries.
- Click [Delete query]. The query is removed from the list.
Executing a Query
- Select the JCR Browser tab.
- Click [More]. The "Query execution" section appears.
- Select the query, for instance "MyNodeTypes XPath", from the drop-down list.
- Modify the query to your needs.
- Click [Execute query]. The results appear on the Query results tab.