当前位置: 首页>>代码示例>>C++>>正文


C++ XPath::evalElement方法代码示例

本文整理汇总了C++中XPath::evalElement方法的典型用法代码示例。如果您正苦于以下问题:C++ XPath::evalElement方法的具体用法?C++ XPath::evalElement怎么用?C++ XPath::evalElement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XPath的用法示例。


在下文中一共展示了XPath::evalElement方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: instructionDrop

  void PersistenceModule::instructionDrop ( __XProcHandlerArgs__ )
  {
    XPath selectXPath ( getXProcessor(), item, xem_pers.select() );
    Document& doc = selectXPath.evalElement().getDocument();

    if ( item.hasAttr ( xem_pers.branchRevId() ) )
      {
        String branchRevStr = item.getEvaledAttr ( getXProcessor(), xem_pers.branchRevId() );
        BranchRevId branchRevId = BranchManager::parseBranchRevId ( branchRevStr.c_str() );
        
        if ( ! branchRevId.branchId || ! branchRevId.revisionId )
          {
            throwException ( Exception, "Invalid branch and revision id '%s'\n", branchRevStr.c_str() );
          }
          
        Log_Pers ( "[XEM:BRANCH] Dropping alter revision [%llu:%llu]\n", _brid(doc.getBranchRevId()) );

        NotImplemented ( "We shall schedule revision removal here !\n" );
#if 0        
        // store.dropRevisions ( branchRevId.branchId, branchRevId.revisionId, branchRevId.revisionId );
        persistentDocument = store.createPersistentDocument ( branchRevId.branchId, branchRevId.revisionId, Document_Read );
        persistentDocument->scheduleRevisionForRemoval ();      
        persistentDocument->release ();
#endif
        return;
      }

    Log_Pers ( "[XEM:BRANCH] Dropping current revision [%llu:%llu]\n", _brid(doc.getBranchRevId()) );
    doc.scheduleRevisionForRemoval ();
  }
开发者ID:Doloops,项目名称:Xemeiah,代码行数:30,代码来源:xempersmodule.cpp

示例2: instructionReopen

 void PersistenceModule::instructionReopen ( __XProcHandlerArgs__ )
 {
   XPath selectXPath ( getXProcessor(), item, xem_pers.select() );
   Document& doc = selectXPath.evalElement().getDocument();
   if ( doc.isWritable() )
     {
       throwException ( Exception, "Current Revision is writable, you should commit it before reopen.\n" );
     }
   doc.reopen ( getXProcessor() );
 }
开发者ID:Doloops,项目名称:Xemeiah,代码行数:10,代码来源:xempersmodule.cpp

示例3: instructionFork

 void PersistenceModule::instructionFork ( __XProcHandlerArgs__ )
 {
   XPath selectXPath ( getXProcessor(), item, xem_pers.select() );
   Document& doc = selectXPath.evalElement().getDocument();
   if ( doc.isWritable() )
     {
       throwException ( Exception, "Current Revision is writable, you should commit it before forking.\n" );
     }
   
   String branchName = item.getEvaledAttr ( getXProcessor(), xem_pers.name() );
   
   doc.fork ( getXProcessor(), branchName, BranchFlags_MayIndexNameIfDuplicate );
 }
开发者ID:Doloops,项目名称:Xemeiah,代码行数:13,代码来源:xempersmodule.cpp

示例4: instructionRenameBranch

  void PersistenceModule::instructionRenameBranch ( __XProcHandlerArgs__ )
  {
    XPath selectXPath ( getXProcessor(), item, xem_pers.select() );
    Document& doc = selectXPath.evalElement().getDocument();

    BranchId branchId = doc.getBranchRevId().branchId;
    
    String branchName = item.getEvaledAttr ( getXProcessor(), xem_pers.name() );
    
    Log_Pers ( "[XEM-BRANCH] Rename branch %llu to '%s'\n", branchId, branchName.c_str() );
    
    getXProcessor().getStore().getBranchManager().renameBranch ( branchId, branchName.c_str() );
  }
开发者ID:Doloops,项目名称:Xemeiah,代码行数:13,代码来源:xempersmodule.cpp

示例5: instructionCommit

 void PersistenceModule::instructionCommit ( __XProcHandlerArgs__ )
 {
   XPath selectXPath ( getXProcessor(), item, xem_pers.select() );
   Document& doc = selectXPath.evalElement().getDocument();
   if ( !doc.isWritable() )
     {
       AssertBug ( !doc.isLockedWrite(), "Document not writable, but locked write ?\n" );
       Warn ( "Document '%s' (%llx:%llx) not writable !\n", doc.getRole().c_str(), _brid(doc.getBranchRevId()) );
       return;
       throwException ( Exception, "Document not writable !\n" );
     }
   if ( !doc.isLockedWrite() )
     {
       doc.lockWrite();
     }
   doc.commit ( getXProcessor() );
 }
开发者ID:Doloops,项目名称:Xemeiah,代码行数:17,代码来源:xempersmodule.cpp

示例6: instructionMerge

  void PersistenceModule::instructionMerge ( __XProcHandlerArgs__ )
  {
    XPath selectXPath ( getXProcessor(), item, xem_pers.select() );
    Document& doc = selectXPath.evalElement().getDocument();
    bool keepBranch = false;

    try
      {
        doc.merge ( getXProcessor(), keepBranch );
      }
    catch ( Exception* e )
      {
        detailException ( e, "xem:merge : could not merge branch.\n" );
        throw ( e);
      }
    doc.scheduleBranchForRemoval ();
  }  
开发者ID:Doloops,项目名称:Xemeiah,代码行数:17,代码来源:xempersmodule.cpp

示例7: evalFunctionKeyGet

  void XPath::evalFunctionKeyGet ( __XPath_Functor_Args )
  {
    KeyId keyNameId = evalStepAsKeyId ( node, step->functionArguments[0] );
    __evalArgNodeSet(1);

    Log_EvalKey ( "xsl:key : expression '%s'\n", expression );

    XPath matchXPath ( xproc );
    XPath useXPath ( xproc );
    XPath scopeXPath(xproc);

    getXProcessor().getXPathKeyExpressions(keyNameId, matchXPath,useXPath);

    ElementMultiMapRef map = node.getDocument().getKeyMapping ( keyNameId );
    if ( ! map )
      {
        map = node.getDocument().createKeyMapping ( keyNameId );
        
        AssertBug ( map, "Could not create SKMultiMapRef !\n" );

        Log_EvalKey ( "Building for key '%x'\n", keyNameId );

        ElementRef baseElement = node.getRootElement ();
#if 0
        if ( instructKey.findAttr ( __builtinKey(xsl.base) ) )
          {
            throwXPathException ( "Invalid xsl:base attribute set !\n" );
            XPath baseXPath ( instructKey, __builtinKey(xsl.base) );

            Log_EvalKey ( "xsl:base : expression '%s'\n", baseXPath.expression );
            
            Log_EvalKey ( "xsl:base - before : base : %llx:%s\n", baseElement.getElementId(), baseElement.getKey().c_str() );
            baseElement = baseXPath.evalElement ( baseElement );
            Log_EvalKey ( "xsl:base - after : base : %llx:%s\n", baseElement.getElementId(), baseElement.getKey().c_str() );
          }
#endif
        evalFunctionKeyBuild ( baseElement, map, matchXPath, useXPath, scopeXPath, 0 );
      }

    evalFunctionKeyGet ( map, useXPath, result, res1 );
  }
开发者ID:Doloops,项目名称:Xemeiah,代码行数:41,代码来源:xpath-key.cpp


注:本文中的XPath::evalElement方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。