Показать Turtle-File на html-странице с разрывами строки

я пытаюсь показать файл черепахи на очень простой домашней странице, которую я сделал.

<p class="lead" id="testbed-meta"> 
    <script>
    $.ajax({
            cache: false,
            type: "GET",
            async: false,
            url: "/native/api/resources/turtle",
            success: function(data,status){ 
            document.getElementById("testbed-meta").innerHTML = data;       
            },
            error: function(xhl,status){
            document.getElementById("testbed-meta").innerHTML = "Error";
            },
            statusCode:{                
                201: function(){
                alert("Error");
                }
            }
        });

    </script>

HTML не понимает, что это черепаха, и превращает его в одну длинную строку без разрывов строки, а также удаляет некоторые части. Может быть, потому что есть некоторые "‹" и ">", которые не экранированы.

Есть ли хороший способ показать файл ttl через html и, возможно, javascript?

EDIT: Кстати, я забыл сказать, что получаю в ответ что-то вроде этого:

@prefix omn-federation: <http://open-multinet.info/ontology/omn-federation#> .

Но HTML не показывает часть "http:/...". Только:

@prefix omn-federation: .

Может из-за "‹" и ">"?!


person Error 404    schedule 30.06.2015    source источник


Ответы (2)


Попробуйте это в обратном вызове успеха:

$("#testbed-meta").text(data);

Метод jQuery text() экранирует весь HTML-код.

Кроме того, если вы хотите получить новые строки в своем HTML, вам необходимо заменить все символы новой строки тегом HTML <br>:

$("#testbed-meta").text(data).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, "$1<br>$2");
person Robo Robok    schedule 01.07.2015
comment
Я получаю сообщение об ошибке, если использую ваш метод: [TypeError: #testbed-meta.text не является функцией]. мой сценарий теперь выглядит так: успех: функция (данные, статус) { (#testbed-meta).текст (данные); }, - person Error 404; 02.07.2015
comment
Это странно, потому что вы используете jQuery в своем примере, а .text() — это встроенный метод jQuery. - person Robo Robok; 02.07.2015
comment
Извините, я забыл $ . Сейчас что-то показывает. Моя вина. Теперь попробую реализовать линейные тормоза - person Error 404; 02.07.2015
comment
Я использовал вашу вторую строку кода, но снова получаю TypeError: .text...replace не является функцией, поэтому я написал это так: var newData = data.replace(...); $(#testbed-meta).text(newData); Но теперь у меня в тексте стоит ‹br›, но по-прежнему нет разрывов строк, хотя я использовал ‹pre› вместо ‹p› - person Error 404; 02.07.2015

попробуйте использовать тег pre вместо тега p:

<pre class="lead" id="testbed-meta"></pre>

Предварительно отформатированный текст HTML (<pre>) представляет предварительно отформатированный текст. Текст в этом элементе обычно отображается непропорциональным шрифтом точно так же, как он расположен в файле. Пробелы внутри этого элемента отображаются как напечатанные.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre

<pre class="lead" id="testbed-meta"> </pre>
<script>
$.ajax({
        cache: false,
        type: "GET",
        async: false,
        url: "/native/api/resources/turtle",
        success: function(data,status){ 
             document.getElementById("testbed-meta").innerHTML = data.replace(/<br\s*\/?>/gi, '\n').replace(/</g, '&lt;'); 


        },
        error: function(xhl,status){
        document.getElementById("testbed-meta").innerHTML = "Error";
        },
        statusCode:{                
            201: function(){
            alert("Error");
            }
        }
    });
</script>

Посмотрите эти небольшие фрагменты:

data = '<br/> \@prefix omn-federation: <open-multinet.info/ontology/omn-federation#>; . <br/> \@prefix rdf: <w3.org/1999/02/22-rdf-syntax-ns#>; . <br/>'
document.getElementById("testbed-meta").innerHTML = data.replace(/<br\s*\/?>/gi, '\n').replace(/</g, '&lt;'); 
<pre id="testbed-meta"></pre>

person ben    schedule 30.06.2015
comment
Спасибо Бен за информацию, но это не сработало. Текст чуть крупнее. По-прежнему нет линейных тормозов. Могу ли я предоставить вам дополнительную информацию, чтобы найти проблему? - person Error 404; 01.07.2015
comment
Я отредактировал свой первый пост, может это из-за тегов? - person Error 404; 01.07.2015
comment
Можете ли вы скопировать данные, которые вы получаете? <pre> должно помочь с новыми строками (в основном, если ваши данные содержат \n или \r). Для < их необходимо заменить. Либо с помощью jquery .text, либо с помощью простого JS .replace(/</g, '&lt;') - person ben; 01.07.2015
comment
Первые строки данных, которые я получаю, выглядят так:‹br/› \@prefix omn-federation: ‹open-multinet.info/ontology/omn-federation#›. ‹br/› \@prefix rdf: ‹w3.org/1999 /02/22-rdf-syntax-ns#› . ‹br/› Я использовал .text, а затем метод .replace, но теперь у меня есть теги ‹br› в моем тексте, и по-прежнему нет разрывов строк. Кстати, с ‹pre› - person Error 404; 02.07.2015
comment
Ой! Итак, у вас есть <br>, который не следует экранировать, и другие теги, которые должны быть... Смотрите мой отредактированный ответ - person ben; 02.07.2015