2013-11-20 2 views
0

Я использую edX Studio, чтобы сделать курс. Я хотел бы создать настраиваемую проблему ввода для python. Кажется, что проблема заключается в том, что теги xml закрываются > или < символами внутри кода python в теге?Как использовать символ большего или меньшего размера с помощью скрипта python, встроенного в xml?

<?xml version="1.0"?> 
<problem> 
    <p>Name as many online learning platforms as you can: </p> 
    <script type="loncapa/python"> 

def make_a_list(name_string): 
    return name_string.split(',') 

def count_names(name_list): 
    return len(name_list) 

def how_many_oli(expect, ans): 
    oli_names = ['udacity', 'udemy', 'codecademy', 'iktel' 
     'codeschool', 'khan academy', 'khanacademy', 'coursera', 'edx', 'iversity'] 
    names = make_a_list(ans) 
    how_many = len(set(names)) 
    message_hint = 'Good work!' 
    for e in names: 
     e=e.strip('"') 
     e=e.strip("'") 
     e=e.strip() 
     e=e.lower() 
     who_is = e 
     if e not in oli_names: 
      message_hint = message_hint+" Tell us about "+str(who_is).title()+"?" 
    if how_many < 1: 
     return { 'ok': False, 'msg': 'None at all?'} 
    if how_many < 5: 
     return { 'ok': True, 'msg': 'Only '+str(how_many)+"?"} 
    if how_many == 5: 
     return { 'ok': True, 'msg': message_hint } 
    if how_many > 5: 
     return { 'ok': True, 'msg': message_hint } 
    return False 

    </script> 
    <customresponse cfn="how_many_oli"> 
    <textline size="100" /> 
    </customresponse> 
</problem> 

Как этого избежать? Я знаю, что могу изменить код, чтобы избежать использования < и >, но должен быть способ использовать их или что-то подобное?

+2

использования кода сущности XML или что-то? – aIKid

ответ

7

содержание текста в XML (character data) должен спасаясь от < и & символов с помощью pre-defined XML entities. код Python не является исключением:

if how_many &lt; 1: 

где < заменяется &lt; и & с &amp;.

Правильный синтаксический анализатор XML будет возвращать текстовое содержимое без экранирования, заменяя такие объекты исходными символами.

+0

Где 'lt' - это имя объекта XML в формате' &name;' ... – nicholaschris

4

< и > - это XML-объекты. Вам нужно будет сбежать от них, то есть вам нужно будет использовать &lt; и &gt;. И если вы используете & себя, &amp;.

Если это боль, вы также можете поместить все это в разделе CDATA:

http://www.w3schools.com/xml/xml_cdata.asp

выглядит следующим образом:

<script> 
<![CDATA[ 
if how_many < 1: 
    return { 'ok': False, 'msg': 'None at all?'} 
]]> 
</script> 
+0

тот же ответ, что и Martijn Pieters ... –

+0

@KDawG Конечно, это происходит очень часто: люди часто публикуют свой ответ в то же время ... –

+0

@arbautjc поэтому, поскольку он отправил минуту позже * тот же ответ *, он подумает об удалении .... –

Смежные вопросы