ヘッダーをスキップ
Oracle® WebCenter Content Site Studio for External Applications開発者ガイド
11g リリース1 (11.1.1)
B72419-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

7 Site Studioタグ・ライブラリおよびヘルパー・メソッド

この項ではSite Studioタグ・ライブラリおよびヘルパー・メソッドについて説明します。この項の内容は、次のとおりです。


注意:

Site Studioタグおよびヘルパー・メソッドはSite Studioの各リリースごとに変更される可能性があります。タグ・ライブラリ・サービス・キャッシングの詳細は、第1.9項「Site Studioタグ・ライブラリを使用したサービス・キャッシュの理解」を参照してください。

7.1 Site Studioタグ・ライブラリ

このトピックでは、Site Studioタグ・ライブラリに関する情報を示し、各タブについて個別に説明します。

7.1.1 Site Studioタグの説明

この項では、Site Studioの各タグとその簡単な説明を示します。追加の詳細は、それぞれのタグの項を参照してください。

タグ 説明
wcm:context ContextタグはSiteContextオブジェクトを新規作成し、それを現在のHttpServletRequest上に設定します。これにより既存のSiteContextが置き換えられます。これ以降のSite Studio APIまたはタグへのコールでは、このコンテキストが使用されます。
wcm:dataFile データファイル・タグはコンテンツ・サーバーからコンテンツをロードして、DataFileオブジェクトへと解析します。オブジェクトは次に、式言語(EL)によってデータファイルの個々のコンポーネントへのアクセスに使用される変数として公開されます。
wcm:dynamicConversion 動的変換タグは、ネイティブ・ドキュメントの動的変換を作成するときに使用される変換ルールを指定するために使用されます。
wcm:dynamicList 動的リスト・タグは、リージョン定義内の指定された動的リスト要素から問合せを実行し、その結果をvar変数に入れます。
wcm:idcParameter Idcパラメータ・タグは、Idcサービス・タグと組み合せて使用され、コンテンツ・サーバー上でIDCサービス・コールを実行します。名前と値のペアを取ります。
wcm:idcService Idcサービス・タグは、Idcパラメータ・タグと組み合せて使用され、コンテンツ・サーバー上でIDCサービス・コールを実行します。
wcm:metadata メタデータ・タグは、コンテンツ・アイテム用のDOC_INFOサービス・コールを実行し、結果としてのDataBinderにコンテンツ・アイテムに関する情報を含めます。
wcm:placeholder プレースホルダ・タグは、テンプレート内のどアイテムを挿入する場所を指定するために使用されます。これは通常はコンテンツですが、ナビゲーション、コード、サブテンプレートなども可能です。
wcm:staticPlaceholder 静的プレースホルダ・タグは、固定データファイルにプレースホルダを追加するために使用できます。これはヘッダーやフッターなど、変更されないコンテンツに便利です。
wcm:url URLタグは、サイト構造への階層リンクか、コンテンツ・サーバーのコンテンツへのリンクか、どちらかをレンダリングします。

7.1.2 Site Studio <wcm:context>タグ

コンテンツ・タグは、SiteContextオブジェクトを新規作成し、それを現在のHttpServletRequest上に設定します。これにより既存のSiteContextが置き換えられます。これ以降のSite Studio APIまたはタグへのコールでは、このコンテキストが使用されます。

コンテンツが現在のパスから初期化されていない場合(initFromPathがfalseか、指定されていない)、新規のSiteContextは既存のSiteContext(がある場合)と同じサイトIDと同じURLを持ちます。

パラメータ

  • siteID: サイトID。必須です。

  • url: サイト・パス。これはサイトIDを差し引いたパスの一部です(例: /about/index.html)。必須です。

  • initFromPath: 現在のHttpServletRequestからのコンテキストを初期化するにはtrueに設定します(urlパラメータは無視されます)。

サイトID "mysite"のバージョン情報セクションのプライマリ・ページへの新しいコンテキストを初期化します。

<wcm:context siteID="mysite" url="/about/index.html" />

サイトIDを指定せずに、新しいURLへの現在のSiteContextをリセットします。

<wcm:context url="/index.html" />

7.1.3 Site Studio <wcm:dataFile>タグ

データファイル・タグはコンテンツ・サーバーからコンテンツをロードして、DataFileオブジェクトへと解析します。オブジェクトは次に、式言語(EL)によってデータファイルの個々のコンポーネントへのアクセスに使用される変数として公開されます。wcm:dataFileタグは通常、リージョン・テンプレート上で使用され、割り当てられたDataFileを表示するためにロードします。

DataFileオブジェクトはマップ・インタフェースを実装し、すべてのメンバーに要素名によるアクセスを許可します。次の2種類の要素を取得できます。

  • TextElement: テキスト・コンテンツ。

  • ListElement: 静的リスト・コンテンツ。ListElementListインタフェースを実装します。リストの各メンバーはTextElementsのマップです。

パラメータ

  • var: 結果としてのDataFileオブジェクトの変数名です。必須です。

  • dataFile: データファイルのコンテンツIDです。省略すると、wcm:placeholderタグ内からコールされた場合に、現在のプレースホルダに割り当てられているIDが使用されます。オプションです。

コンテンツIDがAWARDSのデータファイルの例を以下に示します。

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.stellent.com/wcm-data/ns/8.0.0" version="8.0.0.0">
  <element name="title">Awards</wcm:element>
  <list name="list">
    <row>
      <element name="name">2007 Outstanding Organization Award</element>
    </row>
    <row>
      <element name="name">2006 Top 50 Company</element>
    </row>
  </list>
</root

割り当てられたデータファイルをリージョン・テンプレートからロードします。

<wcm:dataFile var="dataFile" />

あるいは、コンテンツIDを指定してデータファイルをロードします。

<wcm:dataFile var="dataFile" contentID="" />

HTMLにデータをモデリングします。

<h2>${title}</h2>
<ul>
<c:forEach var="row" items="${dataFile.list}">
  <li>${row.name}</li>
</c:forEach>
</ul>

7.1.4 Site Studio <wcm:dynamicConversion>タグ

動的変換タグは、ネイティブ・ドキュメントの動的変換を作成するときに使用される変換ルールを指定するために使用されます。

パラメータ

  • rule: ConversionsDefinitionファイルに定義された動的変換ルールの名前。必須です。

    「表示」→「プロパティ・インスペクタ」→「ルール」→「編集」を選択して動的変換タグのルールを選択できます。ルールが選択されない場合はデフォルトのルールが使用されます。

  • page: 表示するページの番号。オプションです。

  • var: 動的変換の出力を割り当てる変数。省略すると、変換後の出力はページに直接書き込まれます。オプションです。

  • dataFile: 変換対象アイテムのdDocName (コンテンツID)。省略すると、現在のプレースホルダに割り当てられたデータファイルが使用されます。オプションです。

ルールruleNameを使用して現在のデータファイルを変換します。

<wcm:dynamicConversion rule="ruleName" />

ルールruleNameを使用してデータファイルMY_WORD_DOCを変換します。

<wcm:dynamiConversion dataFile="MY_WORD_DOC" rule="ruleName" />

7.1.5 Site Studio <wcm:dynamicList>タグ

動的リスト・タグは、リージョン定義内の指定された動的リスト要素から問合せを実行し、その結果をvar変数に入れます。

パラメータ

  • element: リスト要素の構築に使用されたリスト内の要素の名前。必須です。

  • var: 動的リスト変数。必須です。

  • dataFile: この動的リストをレンダリングするプレースホルダに割り当てられたデータファイル。オプションです。

  • placeholder: この動的リストをレンダリングするプレースホルダの名前。オプションです。

リージョン・テンプレート内で割り当てられたデータファイルを使用する問合せです。

<wcm:dynamicList element="example" var="example"/>

結果をモデリングします。

<ul>
<c:forEach var="row" items="${example.resultSets.SearchResults.rows}">
  <li>${row.dDocName} - ${row.dDocTitle}</li>
</c:forEach>
</ul>

7.1.6 Site Studio <wcm:idcParameter>タグ

Idcパラメータ・タグは、Idcサービス・タグと組み合せて使用され、コンテンツ・サーバー上でIDCサービス・コールを実行します。名前と値のペアを取ります。

重要: パラメータはコールされたサービスにより異なります。サービス・コールとパラメータの詳細は、『Oracle WebCenter Contentサービス・リファレンス・ガイド』を参照してください。

パラメータ

  • name: IDCパラメータ。コンテンツ・サーバー上のIDCサービス・コールのパラメータを入力します。Site Studio IdcServiceタグを使用して、コンテンツ・サーバー上で実行するIDCサービス・コールを定義します。必須です。

  • value: Idcパラメータ変数。このパラメータに有効な値を入力します。必須です。

  • file: trueの場合、値パラメータはパス(ローカル・ファイル・パスまたはこのWebアプリケーション内での相対ファイル・パス)を指定し、ファイル・オブジェクトとしてDataBinderに追加されます。オプションです。

この例では、Idcサービス・タグとIdcパラメータ・タグの両方が使用されます。この例では、CHECKIN_UNIVERSALサービスがコールされ、サービスのパラメータは名前と値のペアを使用して定義されます。

  • doFileCopyパラメータはTRUE (1)に設定されます。このため、チェック・インしたファイルはハード・ドライブから削除されません。

  • dDocNameパラメータはコンテンツIDを定義します。

  • dDocTitleパラメータはタイトルを定義します。

  • dDocTypeパラメータはタイプを定義します。

  • dSecurityGroupパラメータはセキュリティ・グループを定義します。

  • dDocAuthorパラメータは作成者を定義します。

  • primaryFileパラメータは、ファイルのオリジナル名とサーバーから見たファイルの場所への絶対パスを定義します。

<wcm:idcservice service="CHECKIN_UNIVERSAL" var="callStatus"
  <wcm:idcparameter name="doFileCopy" value="1"/>
  <wcm:idcparameter name="dDocName" value="RemoteTestCheckin23"/>
  <wcm:idcparameter name="dDocTitle" value="Test1"/>
  <wcm:idcparameter name="dDocType" value="ADACCT"/>
  <wcm:idcparameter name="dSecurityGroup" value="Public"/>
  <wcm:idcparameter name="dDocAuthor" value="sysadmin"/>
  <wcm:idcparameter name="primaryFile" value="C:/inetpub/Scripts/query2.asp"/>
/>

この例はサービス・コールからデータを取り戻す方法を示します。

<wcm:idcService service="DOC_INFO_BY_NAME" var="docinfo">
  <wcm:idcParameter name="dDocName" value="DATAFILE1234" />
  <wcm:idcParameter name="RevisionSelectionMethod" value="LatestReleased" />
</wcm:idcService>
<c:forEach var="row" items="${docinfo.resultSets.DOC_INFO.rows}">
  <p>The content item <em>${row.dDocName}</em> is a
  <u>${row.xWebsiteObjectType}</u></p>
</c:forEach>

7.1.7 Site Studio <wcm:idcService>タグ

Idcサービス・タグは、Idcパラメータ・タグと組み合せて使用され、コンテンツ・サーバー上でIDCサービス・コールを実行します。

重要: パラメータはコールされたサービスにより異なります。サービス・コールとパラメータの詳細は、『Oracle WebCenter Contentサービス・リファレンス・ガイド』を参照してください。

パラメータ

  • service: Idcサービス。コンテンツ・サーバー上で実行するIDCサービス・コールを入力します。サービス・コールはデータ・バインダを戻します。Site Studio IdcParameterタグを使用して、サービス・コールのパラメータを設定します。必須です。

  • var: Idcサービス変数。コンテンツ・サーバーから返されるレスポンスの結果を格納する変数の名前を入力します。必須です。

  • type: streamに設定すると、コンテンツ・サーバーからのレスポンスはInputStreamオブジェクトです。デフォルト設定のレスポンスはoracle.stellent.ridc.model.DataBinderです。オプションです。

この例では、Idcサービス・タグとIdcパラメータ・タグの両方が使用されます。この例では、CHECKIN_UNIVERSALサービスがコールされ、サービスのパラメータはフィールドと値のペアを使用して定義されます。

  • doFileCopyパラメータはTRUE (1)に設定されます。このため、チェック・インしたファイルはハード・ドライブから削除されません。

  • dDocNameパラメータはコンテンツIDを定義します。

  • dDocTitleパラメータはタイトルを定義します。

  • dDocTypeパラメータはタイプを定義します。

  • dSecurityGroupパラメータはセキュリティ・グループを定義します。

  • dDocAuthorパラメータは作成者を定義します。

  • primaryFileパラメータは、ファイルのオリジナル名とサーバーから見たファイルの場所への絶対パスを定義します。

<wcm:idcservice service="CHECKIN_UNIVERSAL" var="callStatus"
  <wcm:idcparameter name="doFileCopy" value="1"/>
  <wcm:idcparameter name="dDocName" value="RemoteTestCheckin23"/>
  <wcm:idcparameter name="dDocTitle" value="Test1"/>
  <wcm:idcparameter name="dDocType" value="ADACCT"/>
  <wcm:idcparameter name="dSecurityGroup" value="Public"/>
  <wcm:idcparameter name="dDocAuthor" value="sysadmin"/>
  <wcm:idcparameter name="primaryFile" value="C:/inetpub/Scripts/query2.asp"/>
/>

この例はサービス・コールからデータを取り戻す方法を示します。

<wcm:idcService service="DOC_INFO_BY_NAME" var="docinfo">
  <wcm:idcParameter name="dDocName" value="DATAFILE1234" />
  <wcm:idcParameter name="RevisionSelectionMethod" value="LatestReleased" />
</wcm:idcService>
<c:forEach var="row" items="${docinfo.resultSets.DOC_INFO.rows}">
  <p>The content item <em>${row.dDocName}</em> is a
  <u>${row.xWebsiteObjectType}</u></p>
</c:forEach>

7.1.8 Site Studio <wcm:metadata>タグ

メタデータ・タグは、コンテンツ・アイテム用のDOC_INFOサービス・コールを実行し、結果としてのDataBinderにコンテンツ・アイテムに関する情報を含めます。

パラメータ

  • contentID: コンテンツID。必須です。

  • var: メタデータ変数。必須です。

<wcm:metadata contentID="DATAFILE1234" var="metadata"/>
<c:forEach var="metadatarow" items="${metadata.resultSets.DOC_INFO.rows}">
  <p>The content item <em>${metadatarow.dDocName}</em> is a
  <u>${metadatarow.xWebsiteObjectType}</u></p>
</c:forEach>

固定IDでなく、リージョン・テンプレート上のデータファイルを使用することもできます。例を以下に示します。

<wcm:metadata contentID="${wcmContext.placeholder.dataFile}" var="meta"/>

7.1.9 Site Studio <wcm:placeholder>タグ

プレースホルダ・タグは、テンプレート内のどアイテムを挿入する場所を指定するために使用されます。これは通常はコンテンツですが、ナビゲーション、コード、サブテンプレートなども可能です。

パラメータ

  • name: プレースホルダの名前。必須です。

  • location: テンプレート上の場所。オプションです。

  • definition: プレースホルダ定義へのマッピングを指定します。これにより他の方法で指定されたマッピングは無効になります。オプションです。

  • template: データファイルのレンダリングに使用されるリージョン・テンプレート。オプションです。

  • dataFile: このプレースホルダに割り当てるデータファイルのdDocName。オプションです。

  • regionDefinition: データファイル上のxRegionDefinitionのかわりに使用するdDocNameリージョン定義。オプションです。

  • actions: プレースホルダ定義の許可されたアクション。任意数のアクションを設定できます。一緒に使用できないパラメータ(たとえば、サブテンプレートとリージョン定義を同時に指定するなど)を使用する場合、タグは前述のパラメータの順序に基づいて実行します。オプションです。

    • Update [E]: コントリビュータを更新します。

    • Approve [A]: ワークフローを承認します。

    • Reject [R]: ワークフローを拒否します。

    • Document Information [I]: ドキュメント情報を表示します。

    • Switch Data File [S]: データファイルを切り替えます。

    • View Usage Report [U]: Web使用状況レポートを表示します。

    • View tracker Report [T]: Web Trackerレポートを表示します。

    • Update Document Information [M]: コンテンツ情報を更新します。

    • Switch Region Template [V]: リージョン・テンプレートを切り替えます。

    • Remove Content [N]: コントリビュータにコンテンツの削除を可能にします。

<wcm:placeholder name="yourplaceholdername" actions="E"/>
<wcm:placeholder name="yourplaceholdername" actions="EPRISUTMVN"/>

7.1.10 Site Studio <wcm:staticPlaceholder>タグ

静的プレースホルダ・タグは、固定データファイルにプレースホルダを追加するために使用できます。これはヘッダーやフッターなど、変更されないコンテンツに便利です。

パラメータ

  • dataFile: この静的プレースホルダに割り当てるデータファイルのdDocName (コンテンツID)。必須です。

  • name: 静的プレースホルダの名前。オプションです。

  • template: データファイルのレンダリングに使用されるリージョン・テンプレート。オプションです。

  • actions: プレースホルダ定義の許可されたアクション。任意数のアクションを設定できます。一緒に使用できないパラメータ(たとえば、サブテンプレートとリージョン定義を同時に指定するなど)を使用する場合、タグは前述のパラメータの順序に基づいて実行します。オプションです。

    • Update [E]: コントリビュータを更新します。

    • Approve [A]: ワークフローを承認します。

    • Reject [R]: ワークフローを拒否します。

    • Document Information [I]: ドキュメント情報を表示します。

    • View Usage Report [U]: Web使用状況レポートを表示します。

    • View tracker Report [T]: Web Trackerレポートを表示します。

    • Update Document Information [M]: コンテンツ情報を更新します。

    • Switch Region Template [V]: リージョン・テンプレートを切り替えます。

<wcm:staticPlaceholder datafile="yourdatafile" actions="E"/>
<wcm:staticPlaceholder datafile="yourdatafile" actions="EPRIUTMV"/>

7.1.11 Site Studio <wcm:url>タグ

URLタグは、サイト構造への階層リンクか、コンテンツ・サーバーのコンテンツへのリンクか、どちらかをレンダリングします。

パラメータ

  • var: リンク結果を格納する変数名。

  • type: リンクのタイプ。必須です。

    • node: ノードのURLを定義します。

    • dcresource: 動的変換リソースのURLを定義します。プレースホルダ・タグ内でのみ有効。

    • dcpage: 動的変換ページのURLを定義します。プレースホルダ・タグ内でのみ有効。

    • rendition: レンダリングのURLを定義します。

    • resource: リソースのURLを定義します。画像などのWebレイアウト静的リソースへのリンクに使用されます。

    • Link: コンテンツへのリンクの作成に使用されます。

  • url: リンク・パラメータ(タイプによりフォーマットが異なる)。必須です。

    • node: nodeId|nodePathのフォーマット。

    • dcresource: dcResourcePathのフォーマット。

    • dcpage: dcPageNumのフォーマット。

    • rendition: dDocName/renditionNameのフォーマット。

    • resource: dDocName or webLayoutPathのフォーマット。

    • Link: dDocNameまたは(nodeId|nodePath)/dDocNameのフォーマット。

  • siteID: リンク・ターゲットのサイトID。これはサイト・コンテンツ・アイテムのセクションIDとコンテンツIDで構成されます。たとえば、セクションID 56とコンテンツID TEST_ITEM

/Aboutセクション(セクションID 20)へのリンクを作成します。

<wcm:url var="url" type="node" url="/About" />
<wcm:url var="url" type="node" url="20" />

コンテンツ・サーバー内のコンテンツの一部へのリンクを作成します。

<wcm:url var="url" type="resource" 
  url="/groups/public/documents/document/news_article.doc" />

コンテンツ・アイテムのレンダリングへのURL

<!--$wcmUrl("resource","dDocName")-->
<!--$wcmUrl("resource","groups/public/documents/adacct/mydocname.jpg")-->

コンテンツの一部へのリンクを作成し、ノードの内部を表示します(オプションでセクションを指定します)。

<wcm:url var="url" type="link" url="NEWS_ARTICLE" />
<wcm:url var="url" type="link" url="20/NEWS_ARTICLE" />

7.2 Site Studioヘルパー・メソッド

これらのSite Studioヘルパー・メソッドはテンプレートの作成に使用できます。

7.2.1 Site Studio <filterSections>メソッド

セクション・リストをフィルタして、非アクティブなセクションと、コントリビューション・モードでない場合にコントリビュータのみのセクションを削除します。

public static List<SectionNode> filterSections (SiteContext siteContext, List sections) { } 

パラメータ

  • siteContext: サイト・コンテキスト。

  • sections: {@link SectionNode}オブジェクトのリスト。

  • stopLevel: 終了レベル(含む)。

  • includeHome: Trueの場合はhomeセクションを含めます。

返り値

  • sectionList: リストの行を返します(セクションのリストとして示される)。

コード

public static List<SectionNode> filterSections (SiteContext siteContext, List sections) { 
    if (sections == null) { 
      return null; 
  } 
 
    List<SectionNode> sectionList = new ArrayList<SectionNode> (sections.size ()); 
    for (Object sectionObj : sections) { 
   SectionNode section = (SectionNode)sectionObj; 
   if (!Boolean.parseBoolean (section.getModel ().getActive ())) { 
  continue; 
        } 
   if (Boolean.parseBoolean (section.getModel ().getContributorOnly ()) 
          && !siteContext.isContributorMode ()) { 
          continue; 
       } 
  
        //add the section to the list 
        sectionList.add (section); 
    } 
  
    return sectionList; 
} 

7.2.2 Site Studio <listSectionsForRows>メソッド

指定されたパラメータと一致するセクションのリストを作成します。リスト内の各行に当該レベルのすべてのセクションが含まれます。

public static List listSectionsForRows (SiteContext siteContext, int startLevel, int stopLevel, boolean includeHome) { } 

パラメータ

  • siteContext: サイト・コンテキスト。

  • startLevel: 開始レベル(含む)

  • stopLevel: 終了レベル(含む)。

  • includeHome: Trueの場合はhomeセクションを含みます。

返り値

  • rows: リストの行を返します(セクションのリストとして示される)

コード

   public static List listSectionsForRows (SiteContext siteContext, int startLevel, int stopLevel, boolean includeHome) { 
        List<List<SectionNode>> rows = new ArrayList<List<SectionNode>> (); 
         //get the first level 
         if (startLevel < 1) { 
             startLevel = 1; 
         } 
         if (stopLevel < 1) { 
             stopLevel = 1; 
         } 
       Project project = siteContext.getProject (); 
        for (int i = startLevel; i <= stopLevel; i++) { 
             List<SectionNode> sections = project.getStructure ().getSectionsAtLevel (i); 
             if (sections.isEmpty ()) { 
                 //no more sections so we can end here 
                 break; 
             } 
             rows.add (sections); 
         } 
       if (startLevel == 1 && includeHome) { 
            List<SectionNode> nodes = null; 
             if (rows.size () >= 1) { 
                 nodes = rows.get (0); 
             } else { 
                 nodes = new ArrayList<SectionNode> (); 
                 rows.add (nodes); 
             } 
             nodes.add (0, project.getStructure ().getRootSection ()); 
        } 
         return rows; 
    } 

7.2.3 Site Studio <isNodeInNavigationPath>メソッド

現在のノードがナビゲーション・パスの中にあるかどうかチェックします。

public static boolean isNodeInNavigationPath
(SiteContext siteContext, String nodeID, boolean includeHome) { } 

パラメータ

  • siteContext: サイト・コンテキスト。

  • nodeID: ノードID。

  • includeHome: trueの場合はこのチェックでhomeセクション含め、falseの場合は除外します。

返り値

  • isInNavPath: ノードIDがナビゲーション・パスの一部の場合はtrueを返します。

コード

    public static boolean isNodeInNavigationPath (SiteContext siteContext, String nodeID, boolean includeHome) {         if (nodeID == null) {             return false;         }          boolean isInNavPath = false;         SectionNode section = siteContext.getSection ();         if (section != null) {             isInNavPath = (section.getID ().equals (nodeID));              if (!isInNavPath) {                 for (SectionNode parent : section.getAncestors ()) {                     if (parent.getParent () == null && !includeHome) {                         continue;                     }                     isInNavPath = (parent.getID ().equals (nodeID));                     if (isInNavPath) {                         break;                    }                }             }          }            return isInNavPath;      } 

7.2.4 Site Studio <lookupSection>メソッド

パスまたはIDでセクションを検索します。

public static SectionNode lookupSection (SiteContext siteContext, String id) { } 

パラメータ

  • siteContext: サイト・コンテキスト。

  • id: セクション・パスまたはID。

返り値

  • section: セクションを返すか、見つからない場合はヌルを返します。

コード

public static SectionNode lookupSection (SiteContext siteContext, String id) { 
         //see if this is a number 
         SectionNode section = null; 
         boolean isNumber = false; 
         try { 
           Integer.parseInt (id); 
           isNumber = true; 
        } catch (NumberFormatException exp) { 
             //ignored 
         } 
  
         if (isNumber) { 
             section = siteContext.getProject ().getStructure ().getSectionByID (id); 
         } else { 
             //fix up path 
           id = PathHelper.ensureForwardSlashes (id); 
            //handle relative 
             if (!id.startsWith ("/")) { 
                 //get the current section 
                 SectionNode current = siteContext.getSection (); 
                 if (current != null) { 
                     id = current.getUrlPath () + "/" + id; 
                 } 
             } 
           section = siteContext.getProject ().getStructure ().getSectionByPath (id); 
        } 
  
         return section; 
     }