CodeMirror 对 XML 文档熟悉及元素控制自定义

这篇具有很好参考价值的文章主要介绍了CodeMirror 对 XML 文档熟悉及元素控制自定义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CodeMirror 是一个网络代码编辑器组件。它可以在网站中用于实现支持多种编辑功能的文本输入字段,并具有丰富的编程接口以允许进一步扩展。

本文为 xml 格式的代码提示约束格式规范的自定义示例内容。

先看效果,如下:

CodeMirror 对 XML 文档熟悉及元素控制自定义,前端,xml
CodeMirror 对 XML 文档熟悉及元素控制自定义,前端,xml
CodeMirror 对 XML 文档熟悉及元素控制自定义,前端,xml

官方 Demo 的完整代码如下(重点看代码中 tags 的配置):

<!doctype html>

<title>CodeMirror: XML Autocomplete Demo</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../doc/docs.css">

<link rel="stylesheet" href="../lib/codemirror.css">
<link rel="stylesheet" href="../addon/hint/show-hint.css">
<script src="../lib/codemirror.js"></script>
<script src="../addon/hint/show-hint.js"></script>
<script src="../addon/hint/xml-hint.js"></script>
<script src="../mode/xml/xml.js"></script>
<style>
      .CodeMirror { border: 1px solid #eee; }
    </style>
<div id=nav>
  <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>

  <ul>
    <li><a href="../index.html">Home</a>
    <li><a href="../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror5">Code</a>
  </ul>
  <ul>
    <li><a class=active href="#">XML Autocomplete</a>
  </ul>
</div>

<article>
<h2>XML Autocomplete Demo</h2>
<form><textarea id="code" name="code"><!-- write some xml below -->
</textarea></form>

    <p>Press <strong>ctrl-space</strong>, or type a '&lt;' character to
    activate autocompletion. This demo defines a simple schema that
    guides completion. The schema can be customized—see
    the <a href="../doc/manual.html#addon_xml-hint">manual</a>.</p>

    <p>Development of the <code>xml-hint</code> addon was kindly
    sponsored
    by <a href="http://www.xperiment.mobi">www.xperiment.mobi</a>.</p>

    <script>
      var dummy = {
        attrs: {
          color: ["red", "green", "blue", "purple", "white", "black", "yellow"],
          size: ["large", "medium", "small"],
          description: null
        },
        children: []
      };

      var tags = {
        "!top": ["top"],
        "!attrs": {
          id: null,
          class: ["A", "B", "C"]
        },
        top: {
          attrs: {
            lang: ["en", "de", "fr", "nl"],
            freeform: null
          },
          children: ["animal", "plant"]
        },
        animal: {
          attrs: {
            name: null,
            isduck: ["yes", "no"]
          },
          children: ["wings", "feet", "body", "head", "tail"]
        },
        plant: {
          attrs: {name: null},
          children: ["leaves", "stem", "flowers"]
        },
        wings: dummy, feet: dummy, body: dummy, head: dummy, tail: dummy,
        leaves: dummy, stem: dummy, flowers: dummy
      };

      function completeAfter(cm, pred) {
        var cur = cm.getCursor();
        if (!pred || pred()) setTimeout(function() {
          if (!cm.state.completionActive)
            cm.showHint({completeSingle: false});
        }, 100);
        return CodeMirror.Pass;
      }

      function completeIfAfterLt(cm) {
        return completeAfter(cm, function() {
          var cur = cm.getCursor();
          return cm.getRange(CodeMirror.Pos(cur.line, cur.ch - 1), cur) == "<";
        });
      }

      function completeIfInTag(cm) {
        return completeAfter(cm, function() {
          var tok = cm.getTokenAt(cm.getCursor());
          if (tok.type == "string" && (!/['"]/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1)) return false;
          var inner = CodeMirror.innerMode(cm.getMode(), tok.state).state;
          return inner.tagName;
        });
      }

      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "xml",
        lineNumbers: true,
        extraKeys: {
          "'<'": completeAfter,
          "'/'": completeIfAfterLt,
          "' '": completeIfInTag,
          "'='": completeIfInTag,
          "Ctrl-Space": "autocomplete"
        },
        hintOptions: {schemaInfo: tags}
      });
    </script>
  </article>

在线地址:https://codemirror.net/5/demo/xmlcomplete.html


(END)文章来源地址https://www.toymoban.com/news/detail-540113.html

到了这里,关于CodeMirror 对 XML 文档熟悉及元素控制自定义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • xml schema中的all元素

    xml schema中的all元素表示其中的子元素可以按照任何顺序出现,每个元素可以出现0次或者1次。 https://www.w3.org/TR/xmlschema-1/#element-all maxOccurs的默认值是1,minOccurs 的默认值是1。

    2024年02月07日
    浏览(34)
  • 【Java】Maven配置文件帮助文档(settings.xml 和 pom.xml)

    以下几个属性是 settings 属性的下一级属性: localRepository interactiveMode offline pluginGroups proxies servers mirrors profiles activeProfiles localRepository:本地仓库的路径,默认值为 ${user.home}/.m2/repository interactiveMode:表示Maven是否需要和用户交互以获得输入 offline:表示Maven是否需要在离线模式

    2024年02月13日
    浏览(40)
  • XML文档详解

    目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 1.1 学习重点 由于在现代开发过程中,不需要开发人员手动解析XML文

    2024年02月16日
    浏览(33)
  • XML文档节点导航与选择指南

    XPath(XML Path Language)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。 代表XML路径语言: XPath是一种用于在XML文档中导航和选择节点的语言。 路径样式语法: XPath使用路径表达式的“路径样式”语法来标识和导航XM

    2024年04月08日
    浏览(27)
  • 学习 XSLT:XML文档转换的关键

    XSL(eXtensible Stylesheet Language)是一种用于 XML 的样式语言。 XSLT 是一种用于转换 XML 文档的语言。 XPath 是一种用于在 XML 文档中导航的语言。 XQuery 是一种用于查询 XML 文档的语言。 它始于 XSL XSL 代表 EXtensible Stylesheet Language CSS = HTML 的样式表 HTML 使用预定义标签。每个标签的含

    2024年04月09日
    浏览(26)
  • matlab读取xml文档并储存为.mat文件详解

    起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递。 xml文档结构如下: 其中data中为用科学记数法保留的float型变量。 使用MATLAB内置的xmlread函数读取XML文件,然后将数据保存到MAT文件中。matlab读取xml的代

    2024年02月11日
    浏览(35)
  • DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧

    遍历是指通过或遍历节点树 通常,您想要循环一个 XML 文档,例如:当您想要提取每个元素的值时。 这被称为\\\"遍历节点树\\\"。 下面的示例循环遍历所有 book 的子节点,并显示它们的名称和值: 输出: 示例解释 将 XML 字符串加载到 xmlDoc 中 获取根元素的子节点 对于每个子节点

    2024年04月08日
    浏览(75)
  • 【加强版】SAX解析XML返回对应格式的Map对象(解决元素递归嵌套)

    SAX解析XML返回对应格式的Map对象_辛丑年正月十五的博客-CSDN博客        上篇文章实现了xml元素节点的解析并返回了对应格式的Map对象,但是遗留了一个问题,就是当xml中的元素存在递归嵌套时就解析不了,因为qname属性会重复,导致后一个元素会覆盖前一个元素。     

    2024年02月10日
    浏览(32)
  • 机器人强化学习环境mujoco官方文档学习记录(一)——XML

    鉴于研究生课题需要,开始在mujoco中配置仿真环境。而官方文档中各种对象参数纷繁复杂,且涉及mujoco底层计算,不便于初学者进行开发设计。因此本文将MJCF模型的常用对象参数进行总结。 本文档仅供学习参考,如有问题欢迎大家学习交流。 本章是MuJoCo中使用的MJCF建模语言

    2024年02月02日
    浏览(34)
  • Qt6.5示例:QDomDocument类解析XML文档和文件

    QDomDocument类是用于处理XML文档的一个类。QDomDocument提供了对XML文档数据访问的一系列功能,主要功能包括如下: 解析XML文档:QDomDocument可以将XML文档解析为树形结构,每个节点都是一个QDomNode对象,可以通过QDomNode对象的方法来访问和修改节点属性和内容。 创建XML元素和文本

    2024年01月20日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包